Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@anchor-protocol/crossanchor-sdk

Package Overview
Dependencies
Maintainers
5
Versions
104
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@anchor-protocol/crossanchor-sdk - npm Package Compare versions

Comparing version 0.1.2-alpha.119 to 0.1.2-alpha.120

2

lib/cjs/contracts/evm/factories/XAnchorBridge__factory.d.ts

@@ -17,3 +17,3 @@ import { Signer, ContractFactory, Overrides } from "ethers";

readonly contractName: "XAnchorBridge";
static readonly bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614da261007a60003960008181610c0f01528181610c9e01528181610fd0015261105f0152614da26000f3fe60806040526004361061011f5760003560e01c80639cd164cd116100a0578063e802389511610064578063e802389514610398578063e8326573146103c1578063ea30d8f5146103fe578063f2fde38b1461043b578063fe36c951146104645761011f565b80639cd164cd146102a3578063afa73556146102cc578063b032c6d1146102f5578063b0ec620814610332578063c785c7561461035b5761011f565b806349b95551116100e757806349b95551146101df5780634f1ef28614610208578063715018a6146102245780638cf98e851461023b5780638da5cb5b146102785761011f565b806330fc143b146101245780633659cfe61461014d5780633676206714610176578063372500ab1461019f57806347a7d107146101b6575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906133c2565b61048d565b005b34801561015957600080fd5b50610174600480360381019061016f9190613211565b610c0d565b005b34801561018257600080fd5b5061019d600480360381019061019891906132b7565b610dbc565b005b3480156101ab57600080fd5b506101b4610dcf565b005b3480156101c257600080fd5b506101dd60048036038101906101d891906132b7565b610ec2565b005b3480156101eb57600080fd5b506102066004803603810190610201919061342e565b610ed5565b005b610222600480360381019061021d9190613263565b610fce565b005b34801561023057600080fd5b5061023961110b565b005b34801561024757600080fd5b50610262600480360381019061025d9190613211565b611193565b60405161026f9190613e60565b60405180910390f35b34801561028457600080fd5b5061028d6111b3565b60405161029a9190613d5b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132b7565b6111dd565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613345565b6111f0565b005b34801561030157600080fd5b5061031c60048036038101906103179190613211565b6112e9565b6040516103299190613e60565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906132b7565b611309565b005b34801561036757600080fd5b50610382600480360381019061037d9190613211565b6113a8565b60405161038f9190613e60565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613544565b6113c8565b005b3480156103cd57600080fd5b506103e860048036038101906103e3919061331c565b6114be565b6040516103f59190613e60565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613381565b6114de565b60405161043291906141fa565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613211565b611613565b005b34801561047057600080fd5b5061048b600480360381019061048691906135bf565b61170b565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b81526004016105199190613e96565b60006040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061056e919061349c565b9250925092508181906105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90613efa565b60405180910390fd5b60cb5483608001511461064f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106469061417a565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac906141ba565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006106f58460e001516114de565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107359190613e96565b60006040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061078a919061349c565b9250925092508181906107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a906140fa565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff1614610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906140da565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108c09190613e96565b60e06040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613473565b905061091b30611a5a565b816080015114610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109579061401a565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990613eda565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b81526004016109f09190613e7b565b60206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4091906132f3565b610ab0578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610a7d9190613e96565b600060405180830381600087803b158015610a9757600080fd5b505af1158015610aab573d6000803e3d6000fd5b505050505b60008a73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610af857600080fd5b505afa158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b30919061351b565b61ffff16826060015161ffff161415610b5257816040015160001c9050610be8565b8a73ffffffffffffffffffffffffffffffffffffffff16631ff1e286836060015184604001516040518363ffffffff1660e01b8152600401610b95929190614215565b60206040518083038186803b158015610bad57600080fd5b505afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be5919061323a565b90505b610bfe81876020015160001c8460200151611a7d565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cdb611b03565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890613fba565b60405180910390fd5b610d3a81611b5a565b610db981600067ffffffffffffffff811115610d7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610db15781602001600182028036833780820191505090505b506000611bd9565b50565b610dcb828260c0600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610e1f33611a5a565b604051602001610e30929190613c2c565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610e6d9392919061423e565b602060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613596565b50565b610ed182826080600117611e46565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317610f2533611a5a565b8686604051602001610f3a9493929190613ca6565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610f779392919061423e565b602060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc99190613596565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661109c611b03565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990613fba565b60405180910390fd5b6110fb82611b5a565b61110782826001611bd9565b5050565b611113612036565b73ffffffffffffffffffffffffffffffffffffffff166111316111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906140ba565b60405180910390fd5b611191600061203e565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ec82826080600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060001761124033611a5a565b86866040516020016112559493929190613c58565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016112929392919061423e565b602060405180830381600087803b1580156112ac57600080fd5b505af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e49190613596565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b60cd60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90613f5a565b60405180910390fd5b6113a4828260c0600117611e46565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060011761141833611a5a565b8560405160200161142b93929190613ce1565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016114689392919061423e565b602060405180830381600087803b15801561148257600080fd5b505af1158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613596565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b6114e6612bb3565b60006114fb818461210490919063ffffffff16565b826000019061ffff16908161ffff168152505060028161151b91906143a9565b9050611530818461216b90919063ffffffff16565b82602001818152505060208161154691906143a9565b905061155b81846121d290919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff168152505060088161158791906143a9565b905061159c81846121d290919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff16815250506008816115c891906143a9565b90508083511461160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061403a565b60405180910390fd5b50919050565b61161b612036565b73ffffffffffffffffffffffffffffffffffffffff166116396111b3565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906140ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613f3a565b60405180910390fd5b6117088161203e565b50565b600060019054906101000a900460ff166117335760008054906101000a900460ff161561173c565b61173b612239565b5b61177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061405a565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117cb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6117ec604051806060016040528060268152602001614d476026913961224a565b6117f46122e3565b6117fc612344565b8760c960006101000a81548160ff021916908360ff160217905550600160cc60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160cd60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b85518160ff16101561198457600160ce6000888460ff1681518110611918577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197c90614531565b9150506118ca565b508360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611a2f604051806060016040528060268152602001614cfa6026913961224a565b8015611a505760008060016101000a81548160ff0219169083151502179055505b5050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611afe8363a9059cbb60e01b8484604051602401611a9c929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b505050565b6000611b317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b62612036565b73ffffffffffffffffffffffffffffffffffffffff16611b806111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd906140ba565b60405180910390fd5b50565b6000611be3611b03565b9050611bee84612476565b600083511180611bfb5750815b15611c0c57611c0a848461252f565b505b6000611c3a7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612613565b90508060000160009054906101000a900460ff16611da35760018160000160006101000a81548160ff021916908315150217905550611d068583604051602401611c849190613d5b565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061252f565b5060008160000160006101000a81548160ff021916908315150217905550611d2c611b03565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090613f1a565b60405180910390fd5b611da28561261d565b5b5050505050565b60cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d9061411a565b60405180910390fd5b611e41838383611e46565b505050565b611e528333308561266c565b611e7f8360ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f5565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08585600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611eed96959493929190613dff565b602060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3f9190613596565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611f8d33611a5a565b85604051602001611fa093929190613d1e565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401611fdd9392919061423e565b602060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202f9190613596565b5050505050565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060028261211391906143a9565b83511015612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d90613f9a565b60405180910390fd5b60008260028501015190508091505092915050565b600060208261217a91906143a9565b835110156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061407a565b60405180910390fd5b60008260208501015190508091505092915050565b60006008826121e191906143a9565b83511015612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b90613fda565b60405180910390fd5b60008260088501015190508091505092915050565b600061224430612816565b15905090565b6122e08160405160240161225e9190613eb8565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612829565b50565b600060019054906101000a900460ff16612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123299061419a565b60405180910390fd5b61233a612852565b6123426128a3565b565b600060019054906101000a900460ff16612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a9061419a565b60405180910390fd5b61239b612904565b6123a3612955565b565b6000612407826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129a69092919063ffffffff16565b9050600081511115612467578080602001905181019061242791906132f3565b612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d906141da565b60405180910390fd5b5b505050565b6000819050919050565b61247f81612816565b6124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b59061409a565b60405180910390fd5b806124eb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606061253a83612816565b612579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125709061413a565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516125a19190613c15565b600060405180830381855af49150503d80600081146125dc576040519150601f19603f3d011682016040523d82523d6000602084013e6125e1565b606091505b50915091506126098282604051806060016040528060278152602001614d20602791396129be565b9250505092915050565b6000819050919050565b61262681612476565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6126ef846323b872dd60e01b85858560405160240161268d93929190613d9f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612733929190613d76565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612783919061356d565b61278d91906143a9565b90506128108463095ea7b360e01b85846040516024016127ae929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff166128a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128989061419a565b60405180910390fd5b565b600060019054906101000a900460ff166128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e99061419a565b60405180910390fd5b6129026128fd612036565b61203e565b565b600060019054906101000a900460ff16612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a9061419a565b60405180910390fd5b565b600060019054906101000a900460ff166129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b9061419a565b60405180910390fd5b565b60606129b58484600085612a25565b90509392505050565b606083156129ce57829050612a1e565b6000835111156129e15782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a159190613eb8565b60405180910390fd5b9392505050565b606082471015612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6190613ffa565b60405180910390fd5b612a7385612b39565b612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99061415a565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612adb9190613c15565b60006040518083038185875af1925050503d8060008114612b18576040519150601f19603f3d011682016040523d82523d6000602084013e612b1d565b606091505b5091509150612b2d828286612b4c565b92505050949350505050565b600080823b905060008111915050919050565b60608315612b5c57829050612bac565b600083511115612b6f5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39190613eb8565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612c09612c04846142a1565b61427c565b90508083825260208201905082856020860282011115612c2857600080fd5b60005b85811015612c585781612c3e8882612d88565b845260208401935060208301925050600181019050612c2b565b5050509392505050565b6000612c75612c70846142cd565b61427c565b90508083825260208201905082856080860282011115612c9457600080fd5b60005b85811015612cc45781612caa8882612f0d565b845260208401935060808301925050600181019050612c97565b5050509392505050565b6000612ce1612cdc846142f9565b61427c565b905082815260208101848484011115612cf957600080fd5b612d048482856144be565b509392505050565b6000612d1f612d1a846142f9565b61427c565b905082815260208101848484011115612d3757600080fd5b612d428482856144cd565b509392505050565b6000612d5d612d588461432a565b61427c565b905082815260208101848484011115612d7557600080fd5b612d808482856144cd565b509392505050565b600081359050612d9781614c2a565b92915050565b600081519050612dac81614c2a565b92915050565b600082601f830112612dc357600080fd5b8135612dd3848260208601612bf6565b91505092915050565b600082601f830112612ded57600080fd5b8151612dfd848260208601612c62565b91505092915050565b600081519050612e1581614c41565b92915050565b600081359050612e2a81614c58565b92915050565b600081519050612e3f81614c58565b92915050565b600082601f830112612e5657600080fd5b8135612e66848260208601612cce565b91505092915050565b600082601f830112612e8057600080fd5b8151612e90848260208601612d0c565b91505092915050565b60008083601f840112612eab57600080fd5b8235905067ffffffffffffffff811115612ec457600080fd5b602083019150836001820283011115612edc57600080fd5b9250929050565b600082601f830112612ef457600080fd5b8151612f04848260208601612d4a565b91505092915050565b600060808284031215612f1f57600080fd5b612f29608061427c565b90506000612f3984828501612e30565b6000830152506020612f4d84828501612e30565b6020830152506040612f61848285016131fc565b6040830152506060612f75848285016131fc565b60608301525092915050565b600060e08284031215612f9357600080fd5b612f9d60e061427c565b90506000612fad848285016131fc565b6000830152506020612fc1848285016131a8565b6020830152506040612fd584828501612e30565b6040830152506060612fe98482850161317e565b6060830152506080612ffd84828501612e30565b60808301525060a06130118482850161317e565b60a08301525060c0613025848285016131a8565b60c08301525092915050565b6000610160828403121561304457600080fd5b61304f61016061427c565b9050600061305f848285016131fc565b6000830152506020613073848285016131bd565b6020830152506040613087848285016131bd565b604083015250606061309b8482850161317e565b60608301525060806130af84828501612e30565b60808301525060a06130c3848285016131d2565b60a08301525060c06130d7848285016131fc565b60c08301525060e082015167ffffffffffffffff8111156130f757600080fd5b61310384828501612e6f565b60e083015250610100613118848285016131bd565b6101008301525061012082015167ffffffffffffffff81111561313a57600080fd5b61314684828501612ddc565b6101208301525061014061315c84828501612e30565b6101408301525092915050565b60008135905061317881614c6f565b92915050565b60008151905061318d81614c86565b92915050565b6000813590506131a281614c9d565b92915050565b6000815190506131b781614c9d565b92915050565b6000815190506131cc81614cb4565b92915050565b6000815190506131e181614ccb565b92915050565b6000813590506131f681614ce2565b92915050565b60008151905061320b81614ce2565b92915050565b60006020828403121561322357600080fd5b600061323184828501612d88565b91505092915050565b60006020828403121561324c57600080fd5b600061325a84828501612d9d565b91505092915050565b6000806040838503121561327657600080fd5b600061328485828601612d88565b925050602083013567ffffffffffffffff8111156132a157600080fd5b6132ad85828601612e45565b9150509250929050565b600080604083850312156132ca57600080fd5b60006132d885828601612d88565b92505060206132e985828601613193565b9150509250929050565b60006020828403121561330557600080fd5b600061331384828501612e06565b91505092915050565b60006020828403121561332e57600080fd5b600061333c84828501612e1b565b91505092915050565b6000806040838503121561335857600080fd5b600061336685828601612e1b565b925050602061337785828601613169565b9150509250929050565b60006020828403121561339357600080fd5b600082013567ffffffffffffffff8111156133ad57600080fd5b6133b984828501612e45565b91505092915050565b600080604083850312156133d557600080fd5b600083013567ffffffffffffffff8111156133ef57600080fd5b6133fb85828601612e45565b925050602083013567ffffffffffffffff81111561341857600080fd5b61342485828601612e45565b9150509250929050565b6000806020838503121561344157600080fd5b600083013567ffffffffffffffff81111561345b57600080fd5b61346785828601612e99565b92509250509250929050565b600060e0828403121561348557600080fd5b600061349384828501612f81565b91505092915050565b6000806000606084860312156134b157600080fd5b600084015167ffffffffffffffff8111156134cb57600080fd5b6134d786828701613031565b93505060206134e886828701612e06565b925050604084015167ffffffffffffffff81111561350557600080fd5b61351186828701612ee3565b9150509250925092565b60006020828403121561352d57600080fd5b600061353b8482850161317e565b91505092915050565b60006020828403121561355657600080fd5b600061356484828501613193565b91505092915050565b60006020828403121561357f57600080fd5b600061358d848285016131a8565b91505092915050565b6000602082840312156135a857600080fd5b60006135b6848285016131d2565b91505092915050565b600080600080600080600060e0888a0312156135da57600080fd5b60006135e88a828b016131e7565b97505060206135f98a828b01612d88565b965050604061360a8a828b01612d88565b955050606088013567ffffffffffffffff81111561362757600080fd5b6136338a828b01612db2565b94505060806136448a828b01612d88565b93505060a06136558a828b01612d88565b92505060c06136668a828b01612e1b565b91505092959891949750929550565b61367e816143ff565b82525050565b61368d81614411565b82525050565b61369c8161441d565b82525050565b6136ab8161441d565b82525050565b6136c26136bd8261441d565b61455b565b82525050565b60006136d38261435b565b6136dd8185614371565b93506136ed8185602086016144cd565b6136f681614603565b840191505092915050565b600061370c8261435b565b6137168185614382565b93506137268185602086016144cd565b80840191505092915050565b61373b816144ac565b82525050565b600061374d838561439e565b935061375a8385846144be565b82840190509392505050565b600061377182614366565b61377b818561438d565b935061378b8185602086016144cd565b61379481614603565b840191505092915050565b60006137ac601e8361438d565b91506137b78261463b565b602082019050919050565b60006137cf60208361438d565b91506137da82614664565b602082019050919050565b60006137f2602f8361438d565b91506137fd8261468d565b604082019050919050565b600061381560268361438d565b9150613820826146dc565b604082019050919050565b600061383860238361438d565b91506138438261472b565b604082019050919050565b600061385b602c8361438d565b91506138668261477a565b604082019050919050565b600061387e60148361438d565b9150613889826147c9565b602082019050919050565b60006138a1602c8361438d565b91506138ac826147f2565b604082019050919050565b60006138c460148361438d565b91506138cf82614841565b602082019050919050565b60006138e760268361438d565b91506138f28261486a565b604082019050919050565b600061390a601f8361438d565b9150613915826148b9565b602082019050919050565b600061392d60308361438d565b9150613938826148e2565b604082019050919050565b6000613950602e8361438d565b915061395b82614931565b604082019050919050565b600061397360158361438d565b915061397e82614980565b602082019050919050565b6000613996602d8361438d565b91506139a1826149a9565b604082019050919050565b60006139b960208361438d565b91506139c4826149f8565b602082019050919050565b60006139dc60118361438d565b91506139e782614a21565b602082019050919050565b60006139ff60118361438d565b9150613a0a82614a4a565b602082019050919050565b6000613a22601c8361438d565b9150613a2d82614a73565b602082019050919050565b6000613a4560268361438d565b9150613a5082614a9c565b604082019050919050565b6000613a68601d8361438d565b9150613a7382614aeb565b602082019050919050565b6000613a8b602e8361438d565b9150613a9682614b14565b604082019050919050565b6000613aae602b8361438d565b9150613ab982614b63565b604082019050919050565b6000613ad1601f8361438d565b9150613adc82614bb2565b602082019050919050565b6000613af4602a8361438d565b9150613aff82614bdb565b604082019050919050565b608082016000820151613b206000850182613b76565b506020820151613b336020850182613693565b506040820151613b466040850182613bc9565b506060820151613b596060850182613bc9565b50505050565b613b70613b6b82614427565b614565565b82525050565b613b7f81614443565b82525050565b613b8e81614443565b82525050565b613b9d81614471565b82525050565b613bb4613baf82614471565b614577565b82525050565b613bc38161447b565b82525050565b613bd28161448b565b82525050565b613be9613be48261448b565b614581565b82525050565b613bf88161449f565b82525050565b613c0f613c0a8261449f565b614593565b82525050565b6000613c218284613701565b915081905092915050565b6000613c388285613bfe565b600182019150613c4882846136b1565b6020820191508190509392505050565b6000613c648287613bfe565b600182019150613c7482866136b1565b602082019150613c8482856136b1565b602082019150613c948284613b5f565b60108201915081905095945050505050565b6000613cb28287613bfe565b600182019150613cc282866136b1565b602082019150613cd3828486613741565b915081905095945050505050565b6000613ced8286613bfe565b600182019150613cfd82856136b1565b602082019150613d0d8284613ba3565b602082019150819050949350505050565b6000613d2a8286613bfe565b600182019150613d3a82856136b1565b602082019150613d4a8284613bd8565b600882019150819050949350505050565b6000602082019050613d706000830184613675565b92915050565b6000604082019050613d8b6000830185613675565b613d986020830184613675565b9392505050565b6000606082019050613db46000830186613675565b613dc16020830185613675565b613dce6040830184613b94565b949350505050565b6000604082019050613deb6000830185613675565b613df86020830184613b94565b9392505050565b600060c082019050613e146000830189613675565b613e216020830188613b94565b613e2e6040830187613b85565b613e3b60608301866136a2565b613e486080830185613732565b613e5560a0830184613bba565b979650505050505050565b6000602082019050613e756000830184613684565b92915050565b6000602082019050613e9060008301846136a2565b92915050565b60006020820190508181036000830152613eb081846136c8565b905092915050565b60006020820190508181036000830152613ed28184613766565b905092915050565b60006020820190508181036000830152613ef38161379f565b9050919050565b60006020820190508181036000830152613f13816137c2565b9050919050565b60006020820190508181036000830152613f33816137e5565b9050919050565b60006020820190508181036000830152613f5381613808565b9050919050565b60006020820190508181036000830152613f738161382b565b9050919050565b60006020820190508181036000830152613f938161384e565b9050919050565b60006020820190508181036000830152613fb381613871565b9050919050565b60006020820190508181036000830152613fd381613894565b9050919050565b60006020820190508181036000830152613ff3816138b7565b9050919050565b60006020820190508181036000830152614013816138da565b9050919050565b60006020820190508181036000830152614033816138fd565b9050919050565b6000602082019050818103600083015261405381613920565b9050919050565b6000602082019050818103600083015261407381613943565b9050919050565b6000602082019050818103600083015261409381613966565b9050919050565b600060208201905081810360008301526140b381613989565b9050919050565b600060208201905081810360008301526140d3816139ac565b9050919050565b600060208201905081810360008301526140f3816139cf565b9050919050565b60006020820190508181036000830152614113816139f2565b9050919050565b6000602082019050818103600083015261413381613a15565b9050919050565b6000602082019050818103600083015261415381613a38565b9050919050565b6000602082019050818103600083015261417381613a5b565b9050919050565b6000602082019050818103600083015261419381613a7e565b9050919050565b600060208201905081810360008301526141b381613aa1565b9050919050565b600060208201905081810360008301526141d381613ac4565b9050919050565b600060208201905081810360008301526141f381613ae7565b9050919050565b600060808201905061420f6000830184613b0a565b92915050565b600060408201905061422a6000830185613b85565b61423760208301846136a2565b9392505050565b60006060820190506142536000830186613bba565b818103602083015261426581856136c8565b90506142746040830184613bef565b949350505050565b6000614286614297565b90506142928282614500565b919050565b6000604051905090565b600067ffffffffffffffff8211156142bc576142bb6145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156142e8576142e76145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614314576143136145d4565b5b61431d82614603565b9050602081019050919050565b600067ffffffffffffffff821115614345576143446145d4565b5b61434e82614603565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143b482614471565b91506143bf83614471565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143f4576143f36145a5565b5b828201905092915050565b600061440a82614451565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006144b782614471565b9050919050565b82818337600083830152505050565b60005b838110156144eb5780820151818401526020810190506144d0565b838111156144fa576000848401525b50505050565b61450982614603565b810181811067ffffffffffffffff82111715614528576145276145d4565b5b80604052505050565b600061453c8261449f565b915060ff8214156145505761454f6145a5565b5b600182019050919050565b6000819050919050565b600061457082614614565b9050919050565b6000819050919050565b600061458c82614621565b9050919050565b600061459e8261462e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742077686974656c697374656420616e63686f7220737461626c6520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f6e6f742077686974656c697374656420737461626c6520746f6b656e00000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614c33816143ff565b8114614c3e57600080fd5b50565b614c4a81614411565b8114614c5557600080fd5b50565b614c618161441d565b8114614c6c57600080fd5b50565b614c7881614427565b8114614c8357600080fd5b50565b614c8f81614443565b8114614c9a57600080fd5b50565b614ca681614471565b8114614cb157600080fd5b50565b614cbd8161447b565b8114614cc857600080fd5b50565b614cd48161448b565b8114614cdf57600080fd5b50565b614ceb8161449f565b8114614cf657600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220de92904b2b70cb5afd9c52df4c9a2ebb40f18b7ab0c252007e06357a6207039d64736f6c63430008040033";
static readonly bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614cbe61007a60003960008181610d8901528181610e180152818161112e01526111bd0152614cbe6000f3fe60806040526004361061012a5760003560e01c80638cf98e85116100ab578063b0ec62081161006f578063b0ec62081461038f578063c785c756146103b8578063e8023895146103f5578063e83265731461041e578063ea30d8f51461045b578063f2fde38b146104985761012a565b80638cf98e85146102985780638da5cb5b146102d55780639cd164cd14610300578063afa7355614610329578063b032c6d1146103525761012a565b806349b95551116100f257806349b95551146101ea5780634f1ef286146102135780635a5e469d1461022f5780636133f98514610258578063715018a6146102815761012a565b806330fc143b1461012f5780633659cfe6146101585780633676206714610181578063372500ab146101aa57806347a7d107146101c1575b600080fd5b34801561013b57600080fd5b506101566004803603810190610151919061328b565b6104c1565b005b34801561016457600080fd5b5061017f600480360381019061017a919061303c565b610d87565b005b34801561018d57600080fd5b506101a860048036038101906101a39190613131565b610f36565b005b3480156101b657600080fd5b506101bf610f49565b005b3480156101cd57600080fd5b506101e860048036038101906101e39190613131565b61102e565b005b3480156101f657600080fd5b50610211600480360381019061020c91906132f7565b611041565b005b61022d600480360381019061022891906130dd565b61112c565b005b34801561023b57600080fd5b506102566004803603810190610251919061316d565b611269565b005b34801561026457600080fd5b5061027f600480360381019061027a919061308e565b61129d565b005b34801561028d57600080fd5b5061029661145f565b005b3480156102a457600080fd5b506102bf60048036038101906102ba919061303c565b6114e7565b6040516102cc9190613c7e565b60405180910390f35b3480156102e157600080fd5b506102ea611507565b6040516102f79190613b79565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613131565b611531565b005b34801561033557600080fd5b50610350600480360381019061034b919061320e565b611544565b005b34801561035e57600080fd5b506103796004803603810190610374919061303c565b61162f565b6040516103869190613c7e565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190613131565b61164f565b005b3480156103c457600080fd5b506103df60048036038101906103da919061303c565b611662565b6040516103ec9190613c7e565b60405180910390f35b34801561040157600080fd5b5061041c6004803603810190610417919061340d565b611682565b005b34801561042a57600080fd5b50610445600480360381019061044091906131e5565b61176a565b6040516104529190613c7e565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061324a565b61178a565b60405161048f9190613fd8565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba919061303c565b6118bf565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b815260040161054d9190613cb4565b60006040518083038186803b15801561056557600080fd5b505afa158015610579573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105a29190613365565b9250925092508181906105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e29190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff161461063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290613d18565b60405180910390fd5b60cb54836080015114610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90613f58565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090613f98565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006107298460e0015161178a565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107699190613cb4565b60006040518083038186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107be9190613365565b925092509250818190610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe9190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613ef8565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff16146108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90613ed8565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108f49190613cb4565b60e06040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610944919061333c565b905061094f306119b7565b816080015114610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90613e18565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613cf8565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b8152600401610a249190613c99565b60206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7491906131bc565b610ae4578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610ab19190613cb4565b600060405180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050505b6000808b73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6591906133e4565b61ffff16836060015161ffff161415610cc857826040015160001c915060008273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c2b9190613a0b565b600060405180830381855afa9150503d8060008114610c66576040519150601f19603f3d011682016040523d82523d6000602084013e610c6b565b606091505b50915050600081806020019051810190610c859190613488565b90508460200151925060088160ff161115610cc157600881610ca7919061437c565b600a610cb39190614204565b83610cbe9190614322565b92505b5050610d65565b8b73ffffffffffffffffffffffffffffffffffffffff16631ff1e286846060015185604001516040518363ffffffff1660e01b8152600401610d0b929190613ff3565b60206040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190613065565b9150826020015190505b610d7782886020015160001c836119da565b5050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e55611a60565b73ffffffffffffffffffffffffffffffffffffffff1614610eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea290613db8565b60405180910390fd5b610eb481611ab7565b610f3381600067ffffffffffffffff811115610ef9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610f2b5781602001600182028036833780820191505090505b506000611b36565b50565b610f45828260c0600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610f99336119b7565b604051602001610faa929190613a3d565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401610fd99392919061401c565b602060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061345f565b50565b61103d82826080600117611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317611091336119b7565b86866040516020016110a69493929190613b01565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016110d59392919061401c565b602060405180830381600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611127919061345f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111fa611a60565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613db8565b60405180910390fd5b61125982611ab7565b61126582826001611b36565b5050565b61129883838360405160200161127f9190613a22565b60405160208183030381529060405260c0600217611d27565b505050565b600060019054906101000a900460ff166112c55760008054906101000a900460ff16156112ce565b6112cd611f0c565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613e58565b60405180910390fd5b60008060019054906101000a900460ff16159050801561135d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61137e604051806060016040528060268152602001614c6360269139611f1d565b611386611fb6565b61138e612017565b8360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611438604051806060016040528060268152602001614c1660269139611f1d565b80156114595760008060016101000a81548160ff0219169083151502179055505b50505050565b611467612078565b73ffffffffffffffffffffffffffffffffffffffff16611485611507565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613eb8565b60405180910390fd5b6114e56000612080565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61154082826080600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600017611594336119b7565b86866040516020016115a99493929190613a69565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016115d89392919061401c565b602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162a919061345f565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b61165e828260c0600117611d07565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f460406001176116d2336119b7565b856040516020016116e593929190613b3c565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016117149392919061401c565b602060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611766919061345f565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b611792612a89565b60006117a7818461214690919063ffffffff16565b826000019061ffff16908161ffff16815250506002816117c7919061415b565b90506117dc81846121ad90919063ffffffff16565b8260200181815250506020816117f2919061415b565b9050611807818461221490919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611833919061415b565b9050611848818461221490919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611874919061415b565b9050808351146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613e38565b60405180910390fd5b50919050565b6118c7612078565b73ffffffffffffffffffffffffffffffffffffffff166118e5611507565b73ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613d58565b60405180910390fd5b6119b481612080565b50565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611a5b8363a9059cbb60e01b84846040516024016119f9929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b505050565b6000611a8e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611abf612078565b73ffffffffffffffffffffffffffffffffffffffff16611add611507565b73ffffffffffffffffffffffffffffffffffffffff1614611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90613eb8565b60405180910390fd5b50565b6000611b40611a60565b9050611b4b8461234c565b600083511180611b585750815b15611b6957611b678484612405565b505b6000611b977f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6124e9565b90508060000160009054906101000a900460ff16611d005760018160000160006101000a81548160ff021916908315150217905550611c638583604051602401611be19190613b79565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612405565b5060008160000160006101000a81548160ff021916908315150217905550611c89611a60565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613d38565b60405180910390fd5b611cff856124f3565b5b5050505050565b611d2283836040518060200160405280600081525084611d27565b505050565b611d3384333086612542565b611d608460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856125cb565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08686600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611dce96959493929190613c1d565b602060405180830381600087803b158015611de857600080fd5b505af1158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e20919061345f565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611e6e336119b7565b8786604051602001611e839493929190613ab7565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401611eb29392919061401c565b602060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f04919061345f565b505050505050565b6000611f17306126ec565b15905090565b611fb381604051602401611f319190613cd6565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126ff565b50565b600060019054906101000a900460ff16612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613f78565b60405180910390fd5b61200d612728565b612015612779565b565b600060019054906101000a900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613f78565b60405180910390fd5b61206e6127da565b61207661282b565b565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600282612155919061415b565b83511015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613d98565b60405180910390fd5b60008260028501015190508091505092915050565b60006020826121bc919061415b565b835110156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f690613e78565b60405180910390fd5b60008260208501015190508091505092915050565b6000600882612223919061415b565b83511015612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90613dd8565b60405180910390fd5b60008260088501015190508091505092915050565b60006122dd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661287c9092919063ffffffff16565b905060008151111561233d57808060200190518101906122fd91906131bc565b61233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390613fb8565b60405180910390fd5b5b505050565b6000819050919050565b612355816126ec565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613e98565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060612410836126ec565b61244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244690613f18565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516124779190613a0b565b600060405180830381855af49150503d80600081146124b2576040519150601f19603f3d011682016040523d82523d6000602084013e6124b7565b606091505b50915091506124df8282604051806060016040528060278152602001614c3c60279139612894565b9250505092915050565b6000819050919050565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6125c5846323b872dd60e01b85858560405160240161256393929190613bbd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612609929190613b94565b60206040518083038186803b15801561262157600080fd5b505afa158015612635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126599190613436565b612663919061415b565b90506126e68463095ea7b360e01b8584604051602401612684929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff16612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90613f78565b60405180910390fd5b565b600060019054906101000a900460ff166127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613f78565b60405180910390fd5b6127d86127d3612078565b612080565b565b600060019054906101000a900460ff16612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090613f78565b60405180910390fd5b565b600060019054906101000a900460ff1661287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287190613f78565b60405180910390fd5b565b606061288b84846000856128fb565b90509392505050565b606083156128a4578290506128f4565b6000835111156128b75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb9190613cd6565b60405180910390fd5b9392505050565b606082471015612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790613df8565b60405180910390fd5b61294985612a0f565b612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90613f38565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129b19190613a0b565b60006040518083038185875af1925050503d80600081146129ee576040519150601f19603f3d011682016040523d82523d6000602084013e6129f3565b606091505b5091509150612a03828286612a22565b92505050949350505050565b600080823b905060008111915050919050565b60608315612a3257829050612a82565b600083511115612a455782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a799190613cd6565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612adf612ada8461407f565b61405a565b90508083825260208201905082856080860282011115612afe57600080fd5b60005b85811015612b2e5781612b148882612d4d565b845260208401935060808301925050600181019050612b01565b5050509392505050565b6000612b4b612b46846140ab565b61405a565b905082815260208101848484011115612b6357600080fd5b612b6e84828561446f565b509392505050565b6000612b89612b84846140ab565b61405a565b905082815260208101848484011115612ba157600080fd5b612bac84828561447e565b509392505050565b6000612bc7612bc2846140dc565b61405a565b905082815260208101848484011115612bdf57600080fd5b612bea84828561447e565b509392505050565b600081359050612c0181614b46565b92915050565b600081519050612c1681614b46565b92915050565b600082601f830112612c2d57600080fd5b8151612c3d848260208601612acc565b91505092915050565b600081519050612c5581614b5d565b92915050565b600081359050612c6a81614b74565b92915050565b600081519050612c7f81614b74565b92915050565b600082601f830112612c9657600080fd5b8135612ca6848260208601612b38565b91505092915050565b600082601f830112612cc057600080fd5b8151612cd0848260208601612b76565b91505092915050565b60008083601f840112612ceb57600080fd5b8235905067ffffffffffffffff811115612d0457600080fd5b602083019150836001820283011115612d1c57600080fd5b9250929050565b600082601f830112612d3457600080fd5b8151612d44848260208601612bb4565b91505092915050565b600060808284031215612d5f57600080fd5b612d69608061405a565b90506000612d7984828501612c70565b6000830152506020612d8d84828501612c70565b6020830152506040612da184828501613027565b6040830152506060612db584828501613027565b60608301525092915050565b600060e08284031215612dd357600080fd5b612ddd60e061405a565b90506000612ded84828501613027565b6000830152506020612e0184828501612fe8565b6020830152506040612e1584828501612c70565b6040830152506060612e2984828501612fbe565b6060830152506080612e3d84828501612c70565b60808301525060a0612e5184828501612fbe565b60a08301525060c0612e6584828501612fe8565b60c08301525092915050565b60006101608284031215612e8457600080fd5b612e8f61016061405a565b90506000612e9f84828501613027565b6000830152506020612eb384828501612ffd565b6020830152506040612ec784828501612ffd565b6040830152506060612edb84828501612fbe565b6060830152506080612eef84828501612c70565b60808301525060a0612f0384828501613012565b60a08301525060c0612f1784828501613027565b60c08301525060e082015167ffffffffffffffff811115612f3757600080fd5b612f4384828501612caf565b60e083015250610100612f5884828501612ffd565b6101008301525061012082015167ffffffffffffffff811115612f7a57600080fd5b612f8684828501612c1c565b61012083015250610140612f9c84828501612c70565b6101408301525092915050565b600081359050612fb881614b8b565b92915050565b600081519050612fcd81614ba2565b92915050565b600081359050612fe281614bb9565b92915050565b600081519050612ff781614bb9565b92915050565b60008151905061300c81614bd0565b92915050565b60008151905061302181614be7565b92915050565b60008151905061303681614bfe565b92915050565b60006020828403121561304e57600080fd5b600061305c84828501612bf2565b91505092915050565b60006020828403121561307757600080fd5b600061308584828501612c07565b91505092915050565b6000806000606084860312156130a357600080fd5b60006130b186828701612bf2565b93505060206130c286828701612bf2565b92505060406130d386828701612c5b565b9150509250925092565b600080604083850312156130f057600080fd5b60006130fe85828601612bf2565b925050602083013567ffffffffffffffff81111561311b57600080fd5b61312785828601612c85565b9150509250929050565b6000806040838503121561314457600080fd5b600061315285828601612bf2565b925050602061316385828601612fd3565b9150509250929050565b60008060006060848603121561318257600080fd5b600061319086828701612bf2565b93505060206131a186828701612fd3565b92505060406131b286828701612fd3565b9150509250925092565b6000602082840312156131ce57600080fd5b60006131dc84828501612c46565b91505092915050565b6000602082840312156131f757600080fd5b600061320584828501612c5b565b91505092915050565b6000806040838503121561322157600080fd5b600061322f85828601612c5b565b925050602061324085828601612fa9565b9150509250929050565b60006020828403121561325c57600080fd5b600082013567ffffffffffffffff81111561327657600080fd5b61328284828501612c85565b91505092915050565b6000806040838503121561329e57600080fd5b600083013567ffffffffffffffff8111156132b857600080fd5b6132c485828601612c85565b925050602083013567ffffffffffffffff8111156132e157600080fd5b6132ed85828601612c85565b9150509250929050565b6000806020838503121561330a57600080fd5b600083013567ffffffffffffffff81111561332457600080fd5b61333085828601612cd9565b92509250509250929050565b600060e0828403121561334e57600080fd5b600061335c84828501612dc1565b91505092915050565b60008060006060848603121561337a57600080fd5b600084015167ffffffffffffffff81111561339457600080fd5b6133a086828701612e71565b93505060206133b186828701612c46565b925050604084015167ffffffffffffffff8111156133ce57600080fd5b6133da86828701612d23565b9150509250925092565b6000602082840312156133f657600080fd5b600061340484828501612fbe565b91505092915050565b60006020828403121561341f57600080fd5b600061342d84828501612fd3565b91505092915050565b60006020828403121561344857600080fd5b600061345684828501612fe8565b91505092915050565b60006020828403121561347157600080fd5b600061347f84828501613012565b91505092915050565b60006020828403121561349a57600080fd5b60006134a884828501613027565b91505092915050565b6134ba816143b0565b82525050565b6134c9816143c2565b82525050565b6134d8816143ce565b82525050565b6134e7816143ce565b82525050565b6134fe6134f9826143ce565b6144e2565b82525050565b600061350f8261410d565b6135198185614123565b935061352981856020860161447e565b6135328161458a565b840191505092915050565b60006135488261410d565b6135528185614134565b935061356281856020860161447e565b80840191505092915050565b6135778161445d565b82525050565b60006135898385614150565b935061359683858461446f565b82840190509392505050565b60006135ad82614118565b6135b7818561413f565b93506135c781856020860161447e565b6135d08161458a565b840191505092915050565b60006135e8601e8361413f565b91506135f3826145cf565b602082019050919050565b600061360b60208361413f565b9150613616826145f8565b602082019050919050565b600061362e602f8361413f565b915061363982614621565b604082019050919050565b600061365160268361413f565b915061365c82614670565b604082019050919050565b6000613674602c8361413f565b915061367f826146bf565b604082019050919050565b600061369760148361413f565b91506136a28261470e565b602082019050919050565b60006136ba602c8361413f565b91506136c582614737565b604082019050919050565b60006136dd60148361413f565b91506136e882614786565b602082019050919050565b600061370060268361413f565b915061370b826147af565b604082019050919050565b6000613723601f8361413f565b915061372e826147fe565b602082019050919050565b600061374660308361413f565b915061375182614827565b604082019050919050565b6000613769602e8361413f565b915061377482614876565b604082019050919050565b600061378c60158361413f565b9150613797826148c5565b602082019050919050565b60006137af602d8361413f565b91506137ba826148ee565b604082019050919050565b60006137d260208361413f565b91506137dd8261493d565b602082019050919050565b60006137f560118361413f565b915061380082614966565b602082019050919050565b600061381860118361413f565b91506138238261498f565b602082019050919050565b600061383b60268361413f565b9150613846826149b8565b604082019050919050565b600061385e601d8361413f565b915061386982614a07565b602082019050919050565b6000613881602e8361413f565b915061388c82614a30565b604082019050919050565b60006138a4602b8361413f565b91506138af82614a7f565b604082019050919050565b60006138c7601f8361413f565b91506138d282614ace565b602082019050919050565b60006138ea602a8361413f565b91506138f582614af7565b604082019050919050565b608082016000820151613916600085018261396c565b50602082015161392960208501826134cf565b50604082015161393c60408501826139bf565b50606082015161394f60608501826139bf565b50505050565b613966613961826143d8565b6144ec565b82525050565b613975816143f4565b82525050565b613984816143f4565b82525050565b61399381614422565b82525050565b6139aa6139a582614422565b6144fe565b82525050565b6139b98161442c565b82525050565b6139c88161443c565b82525050565b6139df6139da8261443c565b614508565b82525050565b6139ee81614450565b82525050565b613a05613a0082614450565b61451a565b82525050565b6000613a17828461353d565b915081905092915050565b6000613a2e8284613999565b60208201915081905092915050565b6000613a4982856139f4565b600182019150613a5982846134ed565b6020820191508190509392505050565b6000613a7582876139f4565b600182019150613a8582866134ed565b602082019150613a9582856134ed565b602082019150613aa58284613955565b60108201915081905095945050505050565b6000613ac382876139f4565b600182019150613ad382866134ed565b602082019150613ae3828561353d565b9150613aef82846139ce565b60088201915081905095945050505050565b6000613b0d82876139f4565b600182019150613b1d82866134ed565b602082019150613b2e82848661357d565b915081905095945050505050565b6000613b4882866139f4565b600182019150613b5882856134ed565b602082019150613b688284613999565b602082019150819050949350505050565b6000602082019050613b8e60008301846134b1565b92915050565b6000604082019050613ba960008301856134b1565b613bb660208301846134b1565b9392505050565b6000606082019050613bd260008301866134b1565b613bdf60208301856134b1565b613bec604083018461398a565b949350505050565b6000604082019050613c0960008301856134b1565b613c16602083018461398a565b9392505050565b600060c082019050613c3260008301896134b1565b613c3f602083018861398a565b613c4c604083018761397b565b613c5960608301866134de565b613c66608083018561356e565b613c7360a08301846139b0565b979650505050505050565b6000602082019050613c9360008301846134c0565b92915050565b6000602082019050613cae60008301846134de565b92915050565b60006020820190508181036000830152613cce8184613504565b905092915050565b60006020820190508181036000830152613cf081846135a2565b905092915050565b60006020820190508181036000830152613d11816135db565b9050919050565b60006020820190508181036000830152613d31816135fe565b9050919050565b60006020820190508181036000830152613d5181613621565b9050919050565b60006020820190508181036000830152613d7181613644565b9050919050565b60006020820190508181036000830152613d9181613667565b9050919050565b60006020820190508181036000830152613db18161368a565b9050919050565b60006020820190508181036000830152613dd1816136ad565b9050919050565b60006020820190508181036000830152613df1816136d0565b9050919050565b60006020820190508181036000830152613e11816136f3565b9050919050565b60006020820190508181036000830152613e3181613716565b9050919050565b60006020820190508181036000830152613e5181613739565b9050919050565b60006020820190508181036000830152613e718161375c565b9050919050565b60006020820190508181036000830152613e918161377f565b9050919050565b60006020820190508181036000830152613eb1816137a2565b9050919050565b60006020820190508181036000830152613ed1816137c5565b9050919050565b60006020820190508181036000830152613ef1816137e8565b9050919050565b60006020820190508181036000830152613f118161380b565b9050919050565b60006020820190508181036000830152613f318161382e565b9050919050565b60006020820190508181036000830152613f5181613851565b9050919050565b60006020820190508181036000830152613f7181613874565b9050919050565b60006020820190508181036000830152613f9181613897565b9050919050565b60006020820190508181036000830152613fb1816138ba565b9050919050565b60006020820190508181036000830152613fd1816138dd565b9050919050565b6000608082019050613fed6000830184613900565b92915050565b6000604082019050614008600083018561397b565b61401560208301846134de565b9392505050565b600060608201905061403160008301866139b0565b81810360208301526140438185613504565b905061405260408301846139e5565b949350505050565b6000614064614075565b905061407082826144b1565b919050565b6000604051905090565b600067ffffffffffffffff82111561409a5761409961455b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140c6576140c561455b565b5b6140cf8261458a565b9050602081019050919050565b600067ffffffffffffffff8211156140f7576140f661455b565b5b6141008261458a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061416682614422565b915061417183614422565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141a6576141a561452c565b5b828201905092915050565b6000808291508390505b60018511156141fb578086048111156141d7576141d661452c565b5b60018516156141e65780820291505b80810290506141f4856145c2565b94506141bb565b94509492505050565b600061420f82614422565b915061421a83614450565b92506142477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461424f565b905092915050565b60008261425f576001905061431b565b8161426d576000905061431b565b8160018114614283576002811461428d576142bc565b600191505061431b565b60ff84111561429f5761429e61452c565b5b8360020a9150848211156142b6576142b561452c565b5b5061431b565b5060208310610133831016604e8410600b84101617156142f15782820a9050838111156142ec576142eb61452c565b5b61431b565b6142fe84848460016141b1565b925090508184048111156143155761431461452c565b5b81810290505b9392505050565b600061432d82614422565b915061433883614422565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143715761437061452c565b5b828202905092915050565b600061438782614450565b915061439283614450565b9250828210156143a5576143a461452c565b5b828203905092915050565b60006143bb82614402565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061446882614422565b9050919050565b82818337600083830152505050565b60005b8381101561449c578082015181840152602081019050614481565b838111156144ab576000848401525b50505050565b6144ba8261458a565b810181811067ffffffffffffffff821117156144d9576144d861455b565b5b80604052505050565b6000819050919050565b60006144f78261459b565b9050919050565b6000819050919050565b6000614513826145a8565b9050919050565b6000614525826145b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b60008160011c9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614b4f816143b0565b8114614b5a57600080fd5b50565b614b66816143c2565b8114614b7157600080fd5b50565b614b7d816143ce565b8114614b8857600080fd5b50565b614b94816143d8565b8114614b9f57600080fd5b50565b614bab816143f4565b8114614bb657600080fd5b50565b614bc281614422565b8114614bcd57600080fd5b50565b614bd98161442c565b8114614be457600080fd5b50565b614bf08161443c565b8114614bfb57600080fd5b50565b614c0781614450565b8114614c1257600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220fb4b237924672737884526e92a0a134e8d91ee41928648e35332b574cafaad6364736f6c63430008040033";
static readonly abi: ({

@@ -20,0 +20,0 @@ anonymous: boolean;

@@ -133,9 +133,4 @@ "use strict";

{
internalType: "uint8",
name: "_consistencyLevel",
type: "uint8",
},
{
internalType: "address",
name: "_wust",
name: "_wormholeCoreBridge",
type: "address",

@@ -145,27 +140,35 @@ },

internalType: "address",
name: "_aust",
name: "_wormholeTokenBridge",
type: "address",
},
{
internalType: "address[]",
name: "_collateralTokens",
type: "address[]",
internalType: "bytes32",
name: "_terraAnchorBridgeAddress",
type: "bytes32",
},
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_wormholeCoreBridge",
name: "token",
type: "address",
},
{
internalType: "address",
name: "_wormholeTokenBridge",
type: "address",
internalType: "uint256",
name: "lockAmount",
type: "uint256",
},
{
internalType: "bytes32",
name: "_terraAnchorBridgeAddress",
type: "bytes32",
internalType: "uint256",
name: "borrowAmount",
type: "uint256",
},
],
name: "initialize",
name: "lockAndBorrow",
outputs: [],

@@ -441,3 +444,3 @@ stateMutability: "nonpayable",

];
const _bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614da261007a60003960008181610c0f01528181610c9e01528181610fd0015261105f0152614da26000f3fe60806040526004361061011f5760003560e01c80639cd164cd116100a0578063e802389511610064578063e802389514610398578063e8326573146103c1578063ea30d8f5146103fe578063f2fde38b1461043b578063fe36c951146104645761011f565b80639cd164cd146102a3578063afa73556146102cc578063b032c6d1146102f5578063b0ec620814610332578063c785c7561461035b5761011f565b806349b95551116100e757806349b95551146101df5780634f1ef28614610208578063715018a6146102245780638cf98e851461023b5780638da5cb5b146102785761011f565b806330fc143b146101245780633659cfe61461014d5780633676206714610176578063372500ab1461019f57806347a7d107146101b6575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906133c2565b61048d565b005b34801561015957600080fd5b50610174600480360381019061016f9190613211565b610c0d565b005b34801561018257600080fd5b5061019d600480360381019061019891906132b7565b610dbc565b005b3480156101ab57600080fd5b506101b4610dcf565b005b3480156101c257600080fd5b506101dd60048036038101906101d891906132b7565b610ec2565b005b3480156101eb57600080fd5b506102066004803603810190610201919061342e565b610ed5565b005b610222600480360381019061021d9190613263565b610fce565b005b34801561023057600080fd5b5061023961110b565b005b34801561024757600080fd5b50610262600480360381019061025d9190613211565b611193565b60405161026f9190613e60565b60405180910390f35b34801561028457600080fd5b5061028d6111b3565b60405161029a9190613d5b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132b7565b6111dd565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613345565b6111f0565b005b34801561030157600080fd5b5061031c60048036038101906103179190613211565b6112e9565b6040516103299190613e60565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906132b7565b611309565b005b34801561036757600080fd5b50610382600480360381019061037d9190613211565b6113a8565b60405161038f9190613e60565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613544565b6113c8565b005b3480156103cd57600080fd5b506103e860048036038101906103e3919061331c565b6114be565b6040516103f59190613e60565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613381565b6114de565b60405161043291906141fa565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613211565b611613565b005b34801561047057600080fd5b5061048b600480360381019061048691906135bf565b61170b565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b81526004016105199190613e96565b60006040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061056e919061349c565b9250925092508181906105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90613efa565b60405180910390fd5b60cb5483608001511461064f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106469061417a565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac906141ba565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006106f58460e001516114de565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107359190613e96565b60006040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061078a919061349c565b9250925092508181906107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a906140fa565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff1614610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906140da565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108c09190613e96565b60e06040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613473565b905061091b30611a5a565b816080015114610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109579061401a565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990613eda565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b81526004016109f09190613e7b565b60206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4091906132f3565b610ab0578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610a7d9190613e96565b600060405180830381600087803b158015610a9757600080fd5b505af1158015610aab573d6000803e3d6000fd5b505050505b60008a73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610af857600080fd5b505afa158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b30919061351b565b61ffff16826060015161ffff161415610b5257816040015160001c9050610be8565b8a73ffffffffffffffffffffffffffffffffffffffff16631ff1e286836060015184604001516040518363ffffffff1660e01b8152600401610b95929190614215565b60206040518083038186803b158015610bad57600080fd5b505afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be5919061323a565b90505b610bfe81876020015160001c8460200151611a7d565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cdb611b03565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890613fba565b60405180910390fd5b610d3a81611b5a565b610db981600067ffffffffffffffff811115610d7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610db15781602001600182028036833780820191505090505b506000611bd9565b50565b610dcb828260c0600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610e1f33611a5a565b604051602001610e30929190613c2c565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610e6d9392919061423e565b602060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613596565b50565b610ed182826080600117611e46565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317610f2533611a5a565b8686604051602001610f3a9493929190613ca6565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610f779392919061423e565b602060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc99190613596565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661109c611b03565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990613fba565b60405180910390fd5b6110fb82611b5a565b61110782826001611bd9565b5050565b611113612036565b73ffffffffffffffffffffffffffffffffffffffff166111316111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906140ba565b60405180910390fd5b611191600061203e565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ec82826080600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060001761124033611a5a565b86866040516020016112559493929190613c58565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016112929392919061423e565b602060405180830381600087803b1580156112ac57600080fd5b505af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e49190613596565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b60cd60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90613f5a565b60405180910390fd5b6113a4828260c0600117611e46565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060011761141833611a5a565b8560405160200161142b93929190613ce1565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016114689392919061423e565b602060405180830381600087803b15801561148257600080fd5b505af1158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613596565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b6114e6612bb3565b60006114fb818461210490919063ffffffff16565b826000019061ffff16908161ffff168152505060028161151b91906143a9565b9050611530818461216b90919063ffffffff16565b82602001818152505060208161154691906143a9565b905061155b81846121d290919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff168152505060088161158791906143a9565b905061159c81846121d290919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff16815250506008816115c891906143a9565b90508083511461160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061403a565b60405180910390fd5b50919050565b61161b612036565b73ffffffffffffffffffffffffffffffffffffffff166116396111b3565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906140ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613f3a565b60405180910390fd5b6117088161203e565b50565b600060019054906101000a900460ff166117335760008054906101000a900460ff161561173c565b61173b612239565b5b61177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061405a565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117cb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6117ec604051806060016040528060268152602001614d476026913961224a565b6117f46122e3565b6117fc612344565b8760c960006101000a81548160ff021916908360ff160217905550600160cc60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160cd60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b85518160ff16101561198457600160ce6000888460ff1681518110611918577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197c90614531565b9150506118ca565b508360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611a2f604051806060016040528060268152602001614cfa6026913961224a565b8015611a505760008060016101000a81548160ff0219169083151502179055505b5050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611afe8363a9059cbb60e01b8484604051602401611a9c929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b505050565b6000611b317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b62612036565b73ffffffffffffffffffffffffffffffffffffffff16611b806111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd906140ba565b60405180910390fd5b50565b6000611be3611b03565b9050611bee84612476565b600083511180611bfb5750815b15611c0c57611c0a848461252f565b505b6000611c3a7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612613565b90508060000160009054906101000a900460ff16611da35760018160000160006101000a81548160ff021916908315150217905550611d068583604051602401611c849190613d5b565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061252f565b5060008160000160006101000a81548160ff021916908315150217905550611d2c611b03565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090613f1a565b60405180910390fd5b611da28561261d565b5b5050505050565b60cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d9061411a565b60405180910390fd5b611e41838383611e46565b505050565b611e528333308561266c565b611e7f8360ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f5565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08585600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611eed96959493929190613dff565b602060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3f9190613596565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611f8d33611a5a565b85604051602001611fa093929190613d1e565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401611fdd9392919061423e565b602060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202f9190613596565b5050505050565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060028261211391906143a9565b83511015612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d90613f9a565b60405180910390fd5b60008260028501015190508091505092915050565b600060208261217a91906143a9565b835110156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061407a565b60405180910390fd5b60008260208501015190508091505092915050565b60006008826121e191906143a9565b83511015612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b90613fda565b60405180910390fd5b60008260088501015190508091505092915050565b600061224430612816565b15905090565b6122e08160405160240161225e9190613eb8565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612829565b50565b600060019054906101000a900460ff16612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123299061419a565b60405180910390fd5b61233a612852565b6123426128a3565b565b600060019054906101000a900460ff16612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a9061419a565b60405180910390fd5b61239b612904565b6123a3612955565b565b6000612407826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129a69092919063ffffffff16565b9050600081511115612467578080602001905181019061242791906132f3565b612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d906141da565b60405180910390fd5b5b505050565b6000819050919050565b61247f81612816565b6124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b59061409a565b60405180910390fd5b806124eb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606061253a83612816565b612579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125709061413a565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516125a19190613c15565b600060405180830381855af49150503d80600081146125dc576040519150601f19603f3d011682016040523d82523d6000602084013e6125e1565b606091505b50915091506126098282604051806060016040528060278152602001614d20602791396129be565b9250505092915050565b6000819050919050565b61262681612476565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6126ef846323b872dd60e01b85858560405160240161268d93929190613d9f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612733929190613d76565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612783919061356d565b61278d91906143a9565b90506128108463095ea7b360e01b85846040516024016127ae929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff166128a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128989061419a565b60405180910390fd5b565b600060019054906101000a900460ff166128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e99061419a565b60405180910390fd5b6129026128fd612036565b61203e565b565b600060019054906101000a900460ff16612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a9061419a565b60405180910390fd5b565b600060019054906101000a900460ff166129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b9061419a565b60405180910390fd5b565b60606129b58484600085612a25565b90509392505050565b606083156129ce57829050612a1e565b6000835111156129e15782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a159190613eb8565b60405180910390fd5b9392505050565b606082471015612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6190613ffa565b60405180910390fd5b612a7385612b39565b612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99061415a565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612adb9190613c15565b60006040518083038185875af1925050503d8060008114612b18576040519150601f19603f3d011682016040523d82523d6000602084013e612b1d565b606091505b5091509150612b2d828286612b4c565b92505050949350505050565b600080823b905060008111915050919050565b60608315612b5c57829050612bac565b600083511115612b6f5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39190613eb8565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612c09612c04846142a1565b61427c565b90508083825260208201905082856020860282011115612c2857600080fd5b60005b85811015612c585781612c3e8882612d88565b845260208401935060208301925050600181019050612c2b565b5050509392505050565b6000612c75612c70846142cd565b61427c565b90508083825260208201905082856080860282011115612c9457600080fd5b60005b85811015612cc45781612caa8882612f0d565b845260208401935060808301925050600181019050612c97565b5050509392505050565b6000612ce1612cdc846142f9565b61427c565b905082815260208101848484011115612cf957600080fd5b612d048482856144be565b509392505050565b6000612d1f612d1a846142f9565b61427c565b905082815260208101848484011115612d3757600080fd5b612d428482856144cd565b509392505050565b6000612d5d612d588461432a565b61427c565b905082815260208101848484011115612d7557600080fd5b612d808482856144cd565b509392505050565b600081359050612d9781614c2a565b92915050565b600081519050612dac81614c2a565b92915050565b600082601f830112612dc357600080fd5b8135612dd3848260208601612bf6565b91505092915050565b600082601f830112612ded57600080fd5b8151612dfd848260208601612c62565b91505092915050565b600081519050612e1581614c41565b92915050565b600081359050612e2a81614c58565b92915050565b600081519050612e3f81614c58565b92915050565b600082601f830112612e5657600080fd5b8135612e66848260208601612cce565b91505092915050565b600082601f830112612e8057600080fd5b8151612e90848260208601612d0c565b91505092915050565b60008083601f840112612eab57600080fd5b8235905067ffffffffffffffff811115612ec457600080fd5b602083019150836001820283011115612edc57600080fd5b9250929050565b600082601f830112612ef457600080fd5b8151612f04848260208601612d4a565b91505092915050565b600060808284031215612f1f57600080fd5b612f29608061427c565b90506000612f3984828501612e30565b6000830152506020612f4d84828501612e30565b6020830152506040612f61848285016131fc565b6040830152506060612f75848285016131fc565b60608301525092915050565b600060e08284031215612f9357600080fd5b612f9d60e061427c565b90506000612fad848285016131fc565b6000830152506020612fc1848285016131a8565b6020830152506040612fd584828501612e30565b6040830152506060612fe98482850161317e565b6060830152506080612ffd84828501612e30565b60808301525060a06130118482850161317e565b60a08301525060c0613025848285016131a8565b60c08301525092915050565b6000610160828403121561304457600080fd5b61304f61016061427c565b9050600061305f848285016131fc565b6000830152506020613073848285016131bd565b6020830152506040613087848285016131bd565b604083015250606061309b8482850161317e565b60608301525060806130af84828501612e30565b60808301525060a06130c3848285016131d2565b60a08301525060c06130d7848285016131fc565b60c08301525060e082015167ffffffffffffffff8111156130f757600080fd5b61310384828501612e6f565b60e083015250610100613118848285016131bd565b6101008301525061012082015167ffffffffffffffff81111561313a57600080fd5b61314684828501612ddc565b6101208301525061014061315c84828501612e30565b6101408301525092915050565b60008135905061317881614c6f565b92915050565b60008151905061318d81614c86565b92915050565b6000813590506131a281614c9d565b92915050565b6000815190506131b781614c9d565b92915050565b6000815190506131cc81614cb4565b92915050565b6000815190506131e181614ccb565b92915050565b6000813590506131f681614ce2565b92915050565b60008151905061320b81614ce2565b92915050565b60006020828403121561322357600080fd5b600061323184828501612d88565b91505092915050565b60006020828403121561324c57600080fd5b600061325a84828501612d9d565b91505092915050565b6000806040838503121561327657600080fd5b600061328485828601612d88565b925050602083013567ffffffffffffffff8111156132a157600080fd5b6132ad85828601612e45565b9150509250929050565b600080604083850312156132ca57600080fd5b60006132d885828601612d88565b92505060206132e985828601613193565b9150509250929050565b60006020828403121561330557600080fd5b600061331384828501612e06565b91505092915050565b60006020828403121561332e57600080fd5b600061333c84828501612e1b565b91505092915050565b6000806040838503121561335857600080fd5b600061336685828601612e1b565b925050602061337785828601613169565b9150509250929050565b60006020828403121561339357600080fd5b600082013567ffffffffffffffff8111156133ad57600080fd5b6133b984828501612e45565b91505092915050565b600080604083850312156133d557600080fd5b600083013567ffffffffffffffff8111156133ef57600080fd5b6133fb85828601612e45565b925050602083013567ffffffffffffffff81111561341857600080fd5b61342485828601612e45565b9150509250929050565b6000806020838503121561344157600080fd5b600083013567ffffffffffffffff81111561345b57600080fd5b61346785828601612e99565b92509250509250929050565b600060e0828403121561348557600080fd5b600061349384828501612f81565b91505092915050565b6000806000606084860312156134b157600080fd5b600084015167ffffffffffffffff8111156134cb57600080fd5b6134d786828701613031565b93505060206134e886828701612e06565b925050604084015167ffffffffffffffff81111561350557600080fd5b61351186828701612ee3565b9150509250925092565b60006020828403121561352d57600080fd5b600061353b8482850161317e565b91505092915050565b60006020828403121561355657600080fd5b600061356484828501613193565b91505092915050565b60006020828403121561357f57600080fd5b600061358d848285016131a8565b91505092915050565b6000602082840312156135a857600080fd5b60006135b6848285016131d2565b91505092915050565b600080600080600080600060e0888a0312156135da57600080fd5b60006135e88a828b016131e7565b97505060206135f98a828b01612d88565b965050604061360a8a828b01612d88565b955050606088013567ffffffffffffffff81111561362757600080fd5b6136338a828b01612db2565b94505060806136448a828b01612d88565b93505060a06136558a828b01612d88565b92505060c06136668a828b01612e1b565b91505092959891949750929550565b61367e816143ff565b82525050565b61368d81614411565b82525050565b61369c8161441d565b82525050565b6136ab8161441d565b82525050565b6136c26136bd8261441d565b61455b565b82525050565b60006136d38261435b565b6136dd8185614371565b93506136ed8185602086016144cd565b6136f681614603565b840191505092915050565b600061370c8261435b565b6137168185614382565b93506137268185602086016144cd565b80840191505092915050565b61373b816144ac565b82525050565b600061374d838561439e565b935061375a8385846144be565b82840190509392505050565b600061377182614366565b61377b818561438d565b935061378b8185602086016144cd565b61379481614603565b840191505092915050565b60006137ac601e8361438d565b91506137b78261463b565b602082019050919050565b60006137cf60208361438d565b91506137da82614664565b602082019050919050565b60006137f2602f8361438d565b91506137fd8261468d565b604082019050919050565b600061381560268361438d565b9150613820826146dc565b604082019050919050565b600061383860238361438d565b91506138438261472b565b604082019050919050565b600061385b602c8361438d565b91506138668261477a565b604082019050919050565b600061387e60148361438d565b9150613889826147c9565b602082019050919050565b60006138a1602c8361438d565b91506138ac826147f2565b604082019050919050565b60006138c460148361438d565b91506138cf82614841565b602082019050919050565b60006138e760268361438d565b91506138f28261486a565b604082019050919050565b600061390a601f8361438d565b9150613915826148b9565b602082019050919050565b600061392d60308361438d565b9150613938826148e2565b604082019050919050565b6000613950602e8361438d565b915061395b82614931565b604082019050919050565b600061397360158361438d565b915061397e82614980565b602082019050919050565b6000613996602d8361438d565b91506139a1826149a9565b604082019050919050565b60006139b960208361438d565b91506139c4826149f8565b602082019050919050565b60006139dc60118361438d565b91506139e782614a21565b602082019050919050565b60006139ff60118361438d565b9150613a0a82614a4a565b602082019050919050565b6000613a22601c8361438d565b9150613a2d82614a73565b602082019050919050565b6000613a4560268361438d565b9150613a5082614a9c565b604082019050919050565b6000613a68601d8361438d565b9150613a7382614aeb565b602082019050919050565b6000613a8b602e8361438d565b9150613a9682614b14565b604082019050919050565b6000613aae602b8361438d565b9150613ab982614b63565b604082019050919050565b6000613ad1601f8361438d565b9150613adc82614bb2565b602082019050919050565b6000613af4602a8361438d565b9150613aff82614bdb565b604082019050919050565b608082016000820151613b206000850182613b76565b506020820151613b336020850182613693565b506040820151613b466040850182613bc9565b506060820151613b596060850182613bc9565b50505050565b613b70613b6b82614427565b614565565b82525050565b613b7f81614443565b82525050565b613b8e81614443565b82525050565b613b9d81614471565b82525050565b613bb4613baf82614471565b614577565b82525050565b613bc38161447b565b82525050565b613bd28161448b565b82525050565b613be9613be48261448b565b614581565b82525050565b613bf88161449f565b82525050565b613c0f613c0a8261449f565b614593565b82525050565b6000613c218284613701565b915081905092915050565b6000613c388285613bfe565b600182019150613c4882846136b1565b6020820191508190509392505050565b6000613c648287613bfe565b600182019150613c7482866136b1565b602082019150613c8482856136b1565b602082019150613c948284613b5f565b60108201915081905095945050505050565b6000613cb28287613bfe565b600182019150613cc282866136b1565b602082019150613cd3828486613741565b915081905095945050505050565b6000613ced8286613bfe565b600182019150613cfd82856136b1565b602082019150613d0d8284613ba3565b602082019150819050949350505050565b6000613d2a8286613bfe565b600182019150613d3a82856136b1565b602082019150613d4a8284613bd8565b600882019150819050949350505050565b6000602082019050613d706000830184613675565b92915050565b6000604082019050613d8b6000830185613675565b613d986020830184613675565b9392505050565b6000606082019050613db46000830186613675565b613dc16020830185613675565b613dce6040830184613b94565b949350505050565b6000604082019050613deb6000830185613675565b613df86020830184613b94565b9392505050565b600060c082019050613e146000830189613675565b613e216020830188613b94565b613e2e6040830187613b85565b613e3b60608301866136a2565b613e486080830185613732565b613e5560a0830184613bba565b979650505050505050565b6000602082019050613e756000830184613684565b92915050565b6000602082019050613e9060008301846136a2565b92915050565b60006020820190508181036000830152613eb081846136c8565b905092915050565b60006020820190508181036000830152613ed28184613766565b905092915050565b60006020820190508181036000830152613ef38161379f565b9050919050565b60006020820190508181036000830152613f13816137c2565b9050919050565b60006020820190508181036000830152613f33816137e5565b9050919050565b60006020820190508181036000830152613f5381613808565b9050919050565b60006020820190508181036000830152613f738161382b565b9050919050565b60006020820190508181036000830152613f938161384e565b9050919050565b60006020820190508181036000830152613fb381613871565b9050919050565b60006020820190508181036000830152613fd381613894565b9050919050565b60006020820190508181036000830152613ff3816138b7565b9050919050565b60006020820190508181036000830152614013816138da565b9050919050565b60006020820190508181036000830152614033816138fd565b9050919050565b6000602082019050818103600083015261405381613920565b9050919050565b6000602082019050818103600083015261407381613943565b9050919050565b6000602082019050818103600083015261409381613966565b9050919050565b600060208201905081810360008301526140b381613989565b9050919050565b600060208201905081810360008301526140d3816139ac565b9050919050565b600060208201905081810360008301526140f3816139cf565b9050919050565b60006020820190508181036000830152614113816139f2565b9050919050565b6000602082019050818103600083015261413381613a15565b9050919050565b6000602082019050818103600083015261415381613a38565b9050919050565b6000602082019050818103600083015261417381613a5b565b9050919050565b6000602082019050818103600083015261419381613a7e565b9050919050565b600060208201905081810360008301526141b381613aa1565b9050919050565b600060208201905081810360008301526141d381613ac4565b9050919050565b600060208201905081810360008301526141f381613ae7565b9050919050565b600060808201905061420f6000830184613b0a565b92915050565b600060408201905061422a6000830185613b85565b61423760208301846136a2565b9392505050565b60006060820190506142536000830186613bba565b818103602083015261426581856136c8565b90506142746040830184613bef565b949350505050565b6000614286614297565b90506142928282614500565b919050565b6000604051905090565b600067ffffffffffffffff8211156142bc576142bb6145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156142e8576142e76145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614314576143136145d4565b5b61431d82614603565b9050602081019050919050565b600067ffffffffffffffff821115614345576143446145d4565b5b61434e82614603565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143b482614471565b91506143bf83614471565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143f4576143f36145a5565b5b828201905092915050565b600061440a82614451565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006144b782614471565b9050919050565b82818337600083830152505050565b60005b838110156144eb5780820151818401526020810190506144d0565b838111156144fa576000848401525b50505050565b61450982614603565b810181811067ffffffffffffffff82111715614528576145276145d4565b5b80604052505050565b600061453c8261449f565b915060ff8214156145505761454f6145a5565b5b600182019050919050565b6000819050919050565b600061457082614614565b9050919050565b6000819050919050565b600061458c82614621565b9050919050565b600061459e8261462e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742077686974656c697374656420616e63686f7220737461626c6520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f6e6f742077686974656c697374656420737461626c6520746f6b656e00000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614c33816143ff565b8114614c3e57600080fd5b50565b614c4a81614411565b8114614c5557600080fd5b50565b614c618161441d565b8114614c6c57600080fd5b50565b614c7881614427565b8114614c8357600080fd5b50565b614c8f81614443565b8114614c9a57600080fd5b50565b614ca681614471565b8114614cb157600080fd5b50565b614cbd8161447b565b8114614cc857600080fd5b50565b614cd48161448b565b8114614cdf57600080fd5b50565b614ceb8161449f565b8114614cf657600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220de92904b2b70cb5afd9c52df4c9a2ebb40f18b7ab0c252007e06357a6207039d64736f6c63430008040033";
const _bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614cbe61007a60003960008181610d8901528181610e180152818161112e01526111bd0152614cbe6000f3fe60806040526004361061012a5760003560e01c80638cf98e85116100ab578063b0ec62081161006f578063b0ec62081461038f578063c785c756146103b8578063e8023895146103f5578063e83265731461041e578063ea30d8f51461045b578063f2fde38b146104985761012a565b80638cf98e85146102985780638da5cb5b146102d55780639cd164cd14610300578063afa7355614610329578063b032c6d1146103525761012a565b806349b95551116100f257806349b95551146101ea5780634f1ef286146102135780635a5e469d1461022f5780636133f98514610258578063715018a6146102815761012a565b806330fc143b1461012f5780633659cfe6146101585780633676206714610181578063372500ab146101aa57806347a7d107146101c1575b600080fd5b34801561013b57600080fd5b506101566004803603810190610151919061328b565b6104c1565b005b34801561016457600080fd5b5061017f600480360381019061017a919061303c565b610d87565b005b34801561018d57600080fd5b506101a860048036038101906101a39190613131565b610f36565b005b3480156101b657600080fd5b506101bf610f49565b005b3480156101cd57600080fd5b506101e860048036038101906101e39190613131565b61102e565b005b3480156101f657600080fd5b50610211600480360381019061020c91906132f7565b611041565b005b61022d600480360381019061022891906130dd565b61112c565b005b34801561023b57600080fd5b506102566004803603810190610251919061316d565b611269565b005b34801561026457600080fd5b5061027f600480360381019061027a919061308e565b61129d565b005b34801561028d57600080fd5b5061029661145f565b005b3480156102a457600080fd5b506102bf60048036038101906102ba919061303c565b6114e7565b6040516102cc9190613c7e565b60405180910390f35b3480156102e157600080fd5b506102ea611507565b6040516102f79190613b79565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613131565b611531565b005b34801561033557600080fd5b50610350600480360381019061034b919061320e565b611544565b005b34801561035e57600080fd5b506103796004803603810190610374919061303c565b61162f565b6040516103869190613c7e565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190613131565b61164f565b005b3480156103c457600080fd5b506103df60048036038101906103da919061303c565b611662565b6040516103ec9190613c7e565b60405180910390f35b34801561040157600080fd5b5061041c6004803603810190610417919061340d565b611682565b005b34801561042a57600080fd5b50610445600480360381019061044091906131e5565b61176a565b6040516104529190613c7e565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061324a565b61178a565b60405161048f9190613fd8565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba919061303c565b6118bf565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b815260040161054d9190613cb4565b60006040518083038186803b15801561056557600080fd5b505afa158015610579573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105a29190613365565b9250925092508181906105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e29190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff161461063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290613d18565b60405180910390fd5b60cb54836080015114610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90613f58565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090613f98565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006107298460e0015161178a565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107699190613cb4565b60006040518083038186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107be9190613365565b925092509250818190610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe9190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613ef8565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff16146108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90613ed8565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108f49190613cb4565b60e06040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610944919061333c565b905061094f306119b7565b816080015114610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90613e18565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613cf8565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b8152600401610a249190613c99565b60206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7491906131bc565b610ae4578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610ab19190613cb4565b600060405180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050505b6000808b73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6591906133e4565b61ffff16836060015161ffff161415610cc857826040015160001c915060008273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c2b9190613a0b565b600060405180830381855afa9150503d8060008114610c66576040519150601f19603f3d011682016040523d82523d6000602084013e610c6b565b606091505b50915050600081806020019051810190610c859190613488565b90508460200151925060088160ff161115610cc157600881610ca7919061437c565b600a610cb39190614204565b83610cbe9190614322565b92505b5050610d65565b8b73ffffffffffffffffffffffffffffffffffffffff16631ff1e286846060015185604001516040518363ffffffff1660e01b8152600401610d0b929190613ff3565b60206040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190613065565b9150826020015190505b610d7782886020015160001c836119da565b5050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e55611a60565b73ffffffffffffffffffffffffffffffffffffffff1614610eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea290613db8565b60405180910390fd5b610eb481611ab7565b610f3381600067ffffffffffffffff811115610ef9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610f2b5781602001600182028036833780820191505090505b506000611b36565b50565b610f45828260c0600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610f99336119b7565b604051602001610faa929190613a3d565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401610fd99392919061401c565b602060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061345f565b50565b61103d82826080600117611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317611091336119b7565b86866040516020016110a69493929190613b01565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016110d59392919061401c565b602060405180830381600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611127919061345f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111fa611a60565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613db8565b60405180910390fd5b61125982611ab7565b61126582826001611b36565b5050565b61129883838360405160200161127f9190613a22565b60405160208183030381529060405260c0600217611d27565b505050565b600060019054906101000a900460ff166112c55760008054906101000a900460ff16156112ce565b6112cd611f0c565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613e58565b60405180910390fd5b60008060019054906101000a900460ff16159050801561135d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61137e604051806060016040528060268152602001614c6360269139611f1d565b611386611fb6565b61138e612017565b8360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611438604051806060016040528060268152602001614c1660269139611f1d565b80156114595760008060016101000a81548160ff0219169083151502179055505b50505050565b611467612078565b73ffffffffffffffffffffffffffffffffffffffff16611485611507565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613eb8565b60405180910390fd5b6114e56000612080565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61154082826080600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600017611594336119b7565b86866040516020016115a99493929190613a69565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016115d89392919061401c565b602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162a919061345f565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b61165e828260c0600117611d07565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f460406001176116d2336119b7565b856040516020016116e593929190613b3c565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016117149392919061401c565b602060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611766919061345f565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b611792612a89565b60006117a7818461214690919063ffffffff16565b826000019061ffff16908161ffff16815250506002816117c7919061415b565b90506117dc81846121ad90919063ffffffff16565b8260200181815250506020816117f2919061415b565b9050611807818461221490919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611833919061415b565b9050611848818461221490919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611874919061415b565b9050808351146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613e38565b60405180910390fd5b50919050565b6118c7612078565b73ffffffffffffffffffffffffffffffffffffffff166118e5611507565b73ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613d58565b60405180910390fd5b6119b481612080565b50565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611a5b8363a9059cbb60e01b84846040516024016119f9929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b505050565b6000611a8e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611abf612078565b73ffffffffffffffffffffffffffffffffffffffff16611add611507565b73ffffffffffffffffffffffffffffffffffffffff1614611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90613eb8565b60405180910390fd5b50565b6000611b40611a60565b9050611b4b8461234c565b600083511180611b585750815b15611b6957611b678484612405565b505b6000611b977f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6124e9565b90508060000160009054906101000a900460ff16611d005760018160000160006101000a81548160ff021916908315150217905550611c638583604051602401611be19190613b79565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612405565b5060008160000160006101000a81548160ff021916908315150217905550611c89611a60565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613d38565b60405180910390fd5b611cff856124f3565b5b5050505050565b611d2283836040518060200160405280600081525084611d27565b505050565b611d3384333086612542565b611d608460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856125cb565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08686600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611dce96959493929190613c1d565b602060405180830381600087803b158015611de857600080fd5b505af1158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e20919061345f565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611e6e336119b7565b8786604051602001611e839493929190613ab7565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401611eb29392919061401c565b602060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f04919061345f565b505050505050565b6000611f17306126ec565b15905090565b611fb381604051602401611f319190613cd6565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126ff565b50565b600060019054906101000a900460ff16612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613f78565b60405180910390fd5b61200d612728565b612015612779565b565b600060019054906101000a900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613f78565b60405180910390fd5b61206e6127da565b61207661282b565b565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600282612155919061415b565b83511015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613d98565b60405180910390fd5b60008260028501015190508091505092915050565b60006020826121bc919061415b565b835110156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f690613e78565b60405180910390fd5b60008260208501015190508091505092915050565b6000600882612223919061415b565b83511015612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90613dd8565b60405180910390fd5b60008260088501015190508091505092915050565b60006122dd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661287c9092919063ffffffff16565b905060008151111561233d57808060200190518101906122fd91906131bc565b61233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390613fb8565b60405180910390fd5b5b505050565b6000819050919050565b612355816126ec565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613e98565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060612410836126ec565b61244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244690613f18565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516124779190613a0b565b600060405180830381855af49150503d80600081146124b2576040519150601f19603f3d011682016040523d82523d6000602084013e6124b7565b606091505b50915091506124df8282604051806060016040528060278152602001614c3c60279139612894565b9250505092915050565b6000819050919050565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6125c5846323b872dd60e01b85858560405160240161256393929190613bbd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612609929190613b94565b60206040518083038186803b15801561262157600080fd5b505afa158015612635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126599190613436565b612663919061415b565b90506126e68463095ea7b360e01b8584604051602401612684929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff16612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90613f78565b60405180910390fd5b565b600060019054906101000a900460ff166127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613f78565b60405180910390fd5b6127d86127d3612078565b612080565b565b600060019054906101000a900460ff16612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090613f78565b60405180910390fd5b565b600060019054906101000a900460ff1661287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287190613f78565b60405180910390fd5b565b606061288b84846000856128fb565b90509392505050565b606083156128a4578290506128f4565b6000835111156128b75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb9190613cd6565b60405180910390fd5b9392505050565b606082471015612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790613df8565b60405180910390fd5b61294985612a0f565b612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90613f38565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129b19190613a0b565b60006040518083038185875af1925050503d80600081146129ee576040519150601f19603f3d011682016040523d82523d6000602084013e6129f3565b606091505b5091509150612a03828286612a22565b92505050949350505050565b600080823b905060008111915050919050565b60608315612a3257829050612a82565b600083511115612a455782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a799190613cd6565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612adf612ada8461407f565b61405a565b90508083825260208201905082856080860282011115612afe57600080fd5b60005b85811015612b2e5781612b148882612d4d565b845260208401935060808301925050600181019050612b01565b5050509392505050565b6000612b4b612b46846140ab565b61405a565b905082815260208101848484011115612b6357600080fd5b612b6e84828561446f565b509392505050565b6000612b89612b84846140ab565b61405a565b905082815260208101848484011115612ba157600080fd5b612bac84828561447e565b509392505050565b6000612bc7612bc2846140dc565b61405a565b905082815260208101848484011115612bdf57600080fd5b612bea84828561447e565b509392505050565b600081359050612c0181614b46565b92915050565b600081519050612c1681614b46565b92915050565b600082601f830112612c2d57600080fd5b8151612c3d848260208601612acc565b91505092915050565b600081519050612c5581614b5d565b92915050565b600081359050612c6a81614b74565b92915050565b600081519050612c7f81614b74565b92915050565b600082601f830112612c9657600080fd5b8135612ca6848260208601612b38565b91505092915050565b600082601f830112612cc057600080fd5b8151612cd0848260208601612b76565b91505092915050565b60008083601f840112612ceb57600080fd5b8235905067ffffffffffffffff811115612d0457600080fd5b602083019150836001820283011115612d1c57600080fd5b9250929050565b600082601f830112612d3457600080fd5b8151612d44848260208601612bb4565b91505092915050565b600060808284031215612d5f57600080fd5b612d69608061405a565b90506000612d7984828501612c70565b6000830152506020612d8d84828501612c70565b6020830152506040612da184828501613027565b6040830152506060612db584828501613027565b60608301525092915050565b600060e08284031215612dd357600080fd5b612ddd60e061405a565b90506000612ded84828501613027565b6000830152506020612e0184828501612fe8565b6020830152506040612e1584828501612c70565b6040830152506060612e2984828501612fbe565b6060830152506080612e3d84828501612c70565b60808301525060a0612e5184828501612fbe565b60a08301525060c0612e6584828501612fe8565b60c08301525092915050565b60006101608284031215612e8457600080fd5b612e8f61016061405a565b90506000612e9f84828501613027565b6000830152506020612eb384828501612ffd565b6020830152506040612ec784828501612ffd565b6040830152506060612edb84828501612fbe565b6060830152506080612eef84828501612c70565b60808301525060a0612f0384828501613012565b60a08301525060c0612f1784828501613027565b60c08301525060e082015167ffffffffffffffff811115612f3757600080fd5b612f4384828501612caf565b60e083015250610100612f5884828501612ffd565b6101008301525061012082015167ffffffffffffffff811115612f7a57600080fd5b612f8684828501612c1c565b61012083015250610140612f9c84828501612c70565b6101408301525092915050565b600081359050612fb881614b8b565b92915050565b600081519050612fcd81614ba2565b92915050565b600081359050612fe281614bb9565b92915050565b600081519050612ff781614bb9565b92915050565b60008151905061300c81614bd0565b92915050565b60008151905061302181614be7565b92915050565b60008151905061303681614bfe565b92915050565b60006020828403121561304e57600080fd5b600061305c84828501612bf2565b91505092915050565b60006020828403121561307757600080fd5b600061308584828501612c07565b91505092915050565b6000806000606084860312156130a357600080fd5b60006130b186828701612bf2565b93505060206130c286828701612bf2565b92505060406130d386828701612c5b565b9150509250925092565b600080604083850312156130f057600080fd5b60006130fe85828601612bf2565b925050602083013567ffffffffffffffff81111561311b57600080fd5b61312785828601612c85565b9150509250929050565b6000806040838503121561314457600080fd5b600061315285828601612bf2565b925050602061316385828601612fd3565b9150509250929050565b60008060006060848603121561318257600080fd5b600061319086828701612bf2565b93505060206131a186828701612fd3565b92505060406131b286828701612fd3565b9150509250925092565b6000602082840312156131ce57600080fd5b60006131dc84828501612c46565b91505092915050565b6000602082840312156131f757600080fd5b600061320584828501612c5b565b91505092915050565b6000806040838503121561322157600080fd5b600061322f85828601612c5b565b925050602061324085828601612fa9565b9150509250929050565b60006020828403121561325c57600080fd5b600082013567ffffffffffffffff81111561327657600080fd5b61328284828501612c85565b91505092915050565b6000806040838503121561329e57600080fd5b600083013567ffffffffffffffff8111156132b857600080fd5b6132c485828601612c85565b925050602083013567ffffffffffffffff8111156132e157600080fd5b6132ed85828601612c85565b9150509250929050565b6000806020838503121561330a57600080fd5b600083013567ffffffffffffffff81111561332457600080fd5b61333085828601612cd9565b92509250509250929050565b600060e0828403121561334e57600080fd5b600061335c84828501612dc1565b91505092915050565b60008060006060848603121561337a57600080fd5b600084015167ffffffffffffffff81111561339457600080fd5b6133a086828701612e71565b93505060206133b186828701612c46565b925050604084015167ffffffffffffffff8111156133ce57600080fd5b6133da86828701612d23565b9150509250925092565b6000602082840312156133f657600080fd5b600061340484828501612fbe565b91505092915050565b60006020828403121561341f57600080fd5b600061342d84828501612fd3565b91505092915050565b60006020828403121561344857600080fd5b600061345684828501612fe8565b91505092915050565b60006020828403121561347157600080fd5b600061347f84828501613012565b91505092915050565b60006020828403121561349a57600080fd5b60006134a884828501613027565b91505092915050565b6134ba816143b0565b82525050565b6134c9816143c2565b82525050565b6134d8816143ce565b82525050565b6134e7816143ce565b82525050565b6134fe6134f9826143ce565b6144e2565b82525050565b600061350f8261410d565b6135198185614123565b935061352981856020860161447e565b6135328161458a565b840191505092915050565b60006135488261410d565b6135528185614134565b935061356281856020860161447e565b80840191505092915050565b6135778161445d565b82525050565b60006135898385614150565b935061359683858461446f565b82840190509392505050565b60006135ad82614118565b6135b7818561413f565b93506135c781856020860161447e565b6135d08161458a565b840191505092915050565b60006135e8601e8361413f565b91506135f3826145cf565b602082019050919050565b600061360b60208361413f565b9150613616826145f8565b602082019050919050565b600061362e602f8361413f565b915061363982614621565b604082019050919050565b600061365160268361413f565b915061365c82614670565b604082019050919050565b6000613674602c8361413f565b915061367f826146bf565b604082019050919050565b600061369760148361413f565b91506136a28261470e565b602082019050919050565b60006136ba602c8361413f565b91506136c582614737565b604082019050919050565b60006136dd60148361413f565b91506136e882614786565b602082019050919050565b600061370060268361413f565b915061370b826147af565b604082019050919050565b6000613723601f8361413f565b915061372e826147fe565b602082019050919050565b600061374660308361413f565b915061375182614827565b604082019050919050565b6000613769602e8361413f565b915061377482614876565b604082019050919050565b600061378c60158361413f565b9150613797826148c5565b602082019050919050565b60006137af602d8361413f565b91506137ba826148ee565b604082019050919050565b60006137d260208361413f565b91506137dd8261493d565b602082019050919050565b60006137f560118361413f565b915061380082614966565b602082019050919050565b600061381860118361413f565b91506138238261498f565b602082019050919050565b600061383b60268361413f565b9150613846826149b8565b604082019050919050565b600061385e601d8361413f565b915061386982614a07565b602082019050919050565b6000613881602e8361413f565b915061388c82614a30565b604082019050919050565b60006138a4602b8361413f565b91506138af82614a7f565b604082019050919050565b60006138c7601f8361413f565b91506138d282614ace565b602082019050919050565b60006138ea602a8361413f565b91506138f582614af7565b604082019050919050565b608082016000820151613916600085018261396c565b50602082015161392960208501826134cf565b50604082015161393c60408501826139bf565b50606082015161394f60608501826139bf565b50505050565b613966613961826143d8565b6144ec565b82525050565b613975816143f4565b82525050565b613984816143f4565b82525050565b61399381614422565b82525050565b6139aa6139a582614422565b6144fe565b82525050565b6139b98161442c565b82525050565b6139c88161443c565b82525050565b6139df6139da8261443c565b614508565b82525050565b6139ee81614450565b82525050565b613a05613a0082614450565b61451a565b82525050565b6000613a17828461353d565b915081905092915050565b6000613a2e8284613999565b60208201915081905092915050565b6000613a4982856139f4565b600182019150613a5982846134ed565b6020820191508190509392505050565b6000613a7582876139f4565b600182019150613a8582866134ed565b602082019150613a9582856134ed565b602082019150613aa58284613955565b60108201915081905095945050505050565b6000613ac382876139f4565b600182019150613ad382866134ed565b602082019150613ae3828561353d565b9150613aef82846139ce565b60088201915081905095945050505050565b6000613b0d82876139f4565b600182019150613b1d82866134ed565b602082019150613b2e82848661357d565b915081905095945050505050565b6000613b4882866139f4565b600182019150613b5882856134ed565b602082019150613b688284613999565b602082019150819050949350505050565b6000602082019050613b8e60008301846134b1565b92915050565b6000604082019050613ba960008301856134b1565b613bb660208301846134b1565b9392505050565b6000606082019050613bd260008301866134b1565b613bdf60208301856134b1565b613bec604083018461398a565b949350505050565b6000604082019050613c0960008301856134b1565b613c16602083018461398a565b9392505050565b600060c082019050613c3260008301896134b1565b613c3f602083018861398a565b613c4c604083018761397b565b613c5960608301866134de565b613c66608083018561356e565b613c7360a08301846139b0565b979650505050505050565b6000602082019050613c9360008301846134c0565b92915050565b6000602082019050613cae60008301846134de565b92915050565b60006020820190508181036000830152613cce8184613504565b905092915050565b60006020820190508181036000830152613cf081846135a2565b905092915050565b60006020820190508181036000830152613d11816135db565b9050919050565b60006020820190508181036000830152613d31816135fe565b9050919050565b60006020820190508181036000830152613d5181613621565b9050919050565b60006020820190508181036000830152613d7181613644565b9050919050565b60006020820190508181036000830152613d9181613667565b9050919050565b60006020820190508181036000830152613db18161368a565b9050919050565b60006020820190508181036000830152613dd1816136ad565b9050919050565b60006020820190508181036000830152613df1816136d0565b9050919050565b60006020820190508181036000830152613e11816136f3565b9050919050565b60006020820190508181036000830152613e3181613716565b9050919050565b60006020820190508181036000830152613e5181613739565b9050919050565b60006020820190508181036000830152613e718161375c565b9050919050565b60006020820190508181036000830152613e918161377f565b9050919050565b60006020820190508181036000830152613eb1816137a2565b9050919050565b60006020820190508181036000830152613ed1816137c5565b9050919050565b60006020820190508181036000830152613ef1816137e8565b9050919050565b60006020820190508181036000830152613f118161380b565b9050919050565b60006020820190508181036000830152613f318161382e565b9050919050565b60006020820190508181036000830152613f5181613851565b9050919050565b60006020820190508181036000830152613f7181613874565b9050919050565b60006020820190508181036000830152613f9181613897565b9050919050565b60006020820190508181036000830152613fb1816138ba565b9050919050565b60006020820190508181036000830152613fd1816138dd565b9050919050565b6000608082019050613fed6000830184613900565b92915050565b6000604082019050614008600083018561397b565b61401560208301846134de565b9392505050565b600060608201905061403160008301866139b0565b81810360208301526140438185613504565b905061405260408301846139e5565b949350505050565b6000614064614075565b905061407082826144b1565b919050565b6000604051905090565b600067ffffffffffffffff82111561409a5761409961455b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140c6576140c561455b565b5b6140cf8261458a565b9050602081019050919050565b600067ffffffffffffffff8211156140f7576140f661455b565b5b6141008261458a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061416682614422565b915061417183614422565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141a6576141a561452c565b5b828201905092915050565b6000808291508390505b60018511156141fb578086048111156141d7576141d661452c565b5b60018516156141e65780820291505b80810290506141f4856145c2565b94506141bb565b94509492505050565b600061420f82614422565b915061421a83614450565b92506142477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461424f565b905092915050565b60008261425f576001905061431b565b8161426d576000905061431b565b8160018114614283576002811461428d576142bc565b600191505061431b565b60ff84111561429f5761429e61452c565b5b8360020a9150848211156142b6576142b561452c565b5b5061431b565b5060208310610133831016604e8410600b84101617156142f15782820a9050838111156142ec576142eb61452c565b5b61431b565b6142fe84848460016141b1565b925090508184048111156143155761431461452c565b5b81810290505b9392505050565b600061432d82614422565b915061433883614422565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143715761437061452c565b5b828202905092915050565b600061438782614450565b915061439283614450565b9250828210156143a5576143a461452c565b5b828203905092915050565b60006143bb82614402565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061446882614422565b9050919050565b82818337600083830152505050565b60005b8381101561449c578082015181840152602081019050614481565b838111156144ab576000848401525b50505050565b6144ba8261458a565b810181811067ffffffffffffffff821117156144d9576144d861455b565b5b80604052505050565b6000819050919050565b60006144f78261459b565b9050919050565b6000819050919050565b6000614513826145a8565b9050919050565b6000614525826145b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b60008160011c9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614b4f816143b0565b8114614b5a57600080fd5b50565b614b66816143c2565b8114614b7157600080fd5b50565b614b7d816143ce565b8114614b8857600080fd5b50565b614b94816143d8565b8114614b9f57600080fd5b50565b614bab816143f4565b8114614bb657600080fd5b50565b614bc281614422565b8114614bcd57600080fd5b50565b614bd98161442c565b8114614be457600080fd5b50565b614bf08161443c565b8114614bfb57600080fd5b50565b614c0781614450565b8114614c1257600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220fb4b237924672737884526e92a0a134e8d91ee41928648e35332b574cafaad6364736f6c63430008040033";
const isSuperArgs = (xs) => xs.length > 1;

@@ -444,0 +447,0 @@ class XAnchorBridge__factory extends ethers_1.ContractFactory {

@@ -31,3 +31,4 @@ import { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";

"depositStable(address,uint256)": FunctionFragment;
"initialize(uint8,address,address,address[],address,address,bytes32)": FunctionFragment;
"initialize(address,address,bytes32)": FunctionFragment;
"lockAndBorrow(address,uint256,uint256)": FunctionFragment;
"lockCollateral(address,uint256)": FunctionFragment;

@@ -53,3 +54,4 @@ "owner()": FunctionFragment;

encodeFunctionData(functionFragment: "depositStable", values: [string, BigNumberish]): string;
encodeFunctionData(functionFragment: "initialize", values: [BigNumberish, string, string, string[], string, string, BytesLike]): string;
encodeFunctionData(functionFragment: "initialize", values: [string, string, BytesLike]): string;
encodeFunctionData(functionFragment: "lockAndBorrow", values: [string, BigNumberish, BigNumberish]): string;
encodeFunctionData(functionFragment: "lockCollateral", values: [string, BigNumberish]): string;

@@ -75,2 +77,3 @@ encodeFunctionData(functionFragment: "owner", values?: undefined): string;

decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "lockAndBorrow", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "lockCollateral", data: BytesLike): Result;

@@ -152,5 +155,8 @@ decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;

}): Promise<ContractTransaction>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -206,5 +212,8 @@ from?: string | Promise<string>;

}): Promise<ContractTransaction>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -250,3 +259,4 @@ from?: string | Promise<string>;

depositStable(token: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: CallOverrides): Promise<void>;
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: CallOverrides): Promise<void>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<void>;
lockCollateral(token: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;

@@ -289,5 +299,8 @@ owner(overrides?: CallOverrides): Promise<string>;

}): Promise<BigNumber>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<BigNumber>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<BigNumber>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -340,5 +353,8 @@ from?: string | Promise<string>;

}): Promise<PopulatedTransaction>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<PopulatedTransaction>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<PopulatedTransaction>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -345,0 +361,0 @@ from?: string | Promise<string>;

@@ -24,2 +24,3 @@ import { Network } from "../base/contracts";

withdrawAssets(tokenInput: AnyTokenInput, from: string, gasLimit: number, handleEvent?: CrossChainEventHandler<Tx>): Promise<TwoWayTxResponse<Tx>>;
lockAndBorrow(collateralInput: CollateralInput, lockAmount: string, borrowAmount: string, from: string, gasLimit: number, handleEvent?: CrossChainEventHandler<Tx>): Promise<TwoWayTxResponse<Tx>>;
terraAddress(remoteChainAddress: string): Promise<string>;

@@ -37,4 +38,5 @@ abstract sequences(tx: Tx): Sequences;

protected abstract _withdrawAssets(tokenInput: AnyTokenInput, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<Tx>): Promise<Tx>;
protected abstract _lockAndBorrow(collateralInput: CollateralInput, lockAmount: string, borrowAmount: string, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<Tx>): Promise<Tx>;
protected abstract _receipt(txHash: string): Promise<Tx>;
private queryTerraAddress;
}

@@ -50,2 +50,5 @@ "use strict";

}
async lockAndBorrow(collateralInput, lockAmount, borrowAmount, from, gasLimit, handleEvent = defaultEventHandler) {
return this.wormhole.bridge(() => this._lockAndBorrow(collateralInput, lockAmount, borrowAmount, from, gasLimit, handleEvent), handleEvent);
}
terraAddress(remoteChainAddress) {

@@ -52,0 +55,0 @@ return this.queryTerraAddress(remoteChainAddress);

@@ -25,2 +25,3 @@ import { CrossAnchorSdk, CrossChainEventHandler, Network, Sequences, Redemption, AnyTokenInput, CollateralInput } from "../base";

protected _withdrawAssets(tokenInput: AnyTokenInput, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<ContractReceipt>): Promise<ContractReceipt>;
protected _lockAndBorrow(collateralInput: CollateralInput, lockAmount: string, borrowAmount: string, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<ContractReceipt>): Promise<ContractReceipt>;
protected _receipt(txHash: string): Promise<ContractReceipt>;

@@ -27,0 +28,0 @@ sequences(receipt: ContractReceipt): Sequences;

@@ -85,2 +85,5 @@ "use strict";

}
_lockAndBorrow(collateralInput, lockAmount, borrowAmount, from, gasLimit, handleEvent) {
return this.tx(() => this.crossAnchorBridgeContract.lockAndBorrow((0, base_1.tokenContract)(this.chainId, this.network, collateralInput), lockAmount, borrowAmount, { from, gasLimit }), handleEvent);
}
async _receipt(txHash) {

@@ -87,0 +90,0 @@ const tx = await this.provider.getTransaction(txHash);

@@ -17,3 +17,3 @@ import { Signer, ContractFactory, Overrides } from "ethers";

readonly contractName: "XAnchorBridge";
static readonly bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614da261007a60003960008181610c0f01528181610c9e01528181610fd0015261105f0152614da26000f3fe60806040526004361061011f5760003560e01c80639cd164cd116100a0578063e802389511610064578063e802389514610398578063e8326573146103c1578063ea30d8f5146103fe578063f2fde38b1461043b578063fe36c951146104645761011f565b80639cd164cd146102a3578063afa73556146102cc578063b032c6d1146102f5578063b0ec620814610332578063c785c7561461035b5761011f565b806349b95551116100e757806349b95551146101df5780634f1ef28614610208578063715018a6146102245780638cf98e851461023b5780638da5cb5b146102785761011f565b806330fc143b146101245780633659cfe61461014d5780633676206714610176578063372500ab1461019f57806347a7d107146101b6575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906133c2565b61048d565b005b34801561015957600080fd5b50610174600480360381019061016f9190613211565b610c0d565b005b34801561018257600080fd5b5061019d600480360381019061019891906132b7565b610dbc565b005b3480156101ab57600080fd5b506101b4610dcf565b005b3480156101c257600080fd5b506101dd60048036038101906101d891906132b7565b610ec2565b005b3480156101eb57600080fd5b506102066004803603810190610201919061342e565b610ed5565b005b610222600480360381019061021d9190613263565b610fce565b005b34801561023057600080fd5b5061023961110b565b005b34801561024757600080fd5b50610262600480360381019061025d9190613211565b611193565b60405161026f9190613e60565b60405180910390f35b34801561028457600080fd5b5061028d6111b3565b60405161029a9190613d5b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132b7565b6111dd565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613345565b6111f0565b005b34801561030157600080fd5b5061031c60048036038101906103179190613211565b6112e9565b6040516103299190613e60565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906132b7565b611309565b005b34801561036757600080fd5b50610382600480360381019061037d9190613211565b6113a8565b60405161038f9190613e60565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613544565b6113c8565b005b3480156103cd57600080fd5b506103e860048036038101906103e3919061331c565b6114be565b6040516103f59190613e60565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613381565b6114de565b60405161043291906141fa565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613211565b611613565b005b34801561047057600080fd5b5061048b600480360381019061048691906135bf565b61170b565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b81526004016105199190613e96565b60006040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061056e919061349c565b9250925092508181906105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90613efa565b60405180910390fd5b60cb5483608001511461064f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106469061417a565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac906141ba565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006106f58460e001516114de565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107359190613e96565b60006040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061078a919061349c565b9250925092508181906107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a906140fa565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff1614610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906140da565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108c09190613e96565b60e06040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613473565b905061091b30611a5a565b816080015114610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109579061401a565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990613eda565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b81526004016109f09190613e7b565b60206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4091906132f3565b610ab0578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610a7d9190613e96565b600060405180830381600087803b158015610a9757600080fd5b505af1158015610aab573d6000803e3d6000fd5b505050505b60008a73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610af857600080fd5b505afa158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b30919061351b565b61ffff16826060015161ffff161415610b5257816040015160001c9050610be8565b8a73ffffffffffffffffffffffffffffffffffffffff16631ff1e286836060015184604001516040518363ffffffff1660e01b8152600401610b95929190614215565b60206040518083038186803b158015610bad57600080fd5b505afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be5919061323a565b90505b610bfe81876020015160001c8460200151611a7d565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cdb611b03565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890613fba565b60405180910390fd5b610d3a81611b5a565b610db981600067ffffffffffffffff811115610d7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610db15781602001600182028036833780820191505090505b506000611bd9565b50565b610dcb828260c0600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610e1f33611a5a565b604051602001610e30929190613c2c565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610e6d9392919061423e565b602060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613596565b50565b610ed182826080600117611e46565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317610f2533611a5a565b8686604051602001610f3a9493929190613ca6565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610f779392919061423e565b602060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc99190613596565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661109c611b03565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990613fba565b60405180910390fd5b6110fb82611b5a565b61110782826001611bd9565b5050565b611113612036565b73ffffffffffffffffffffffffffffffffffffffff166111316111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906140ba565b60405180910390fd5b611191600061203e565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ec82826080600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060001761124033611a5a565b86866040516020016112559493929190613c58565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016112929392919061423e565b602060405180830381600087803b1580156112ac57600080fd5b505af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e49190613596565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b60cd60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90613f5a565b60405180910390fd5b6113a4828260c0600117611e46565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060011761141833611a5a565b8560405160200161142b93929190613ce1565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016114689392919061423e565b602060405180830381600087803b15801561148257600080fd5b505af1158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613596565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b6114e6612bb3565b60006114fb818461210490919063ffffffff16565b826000019061ffff16908161ffff168152505060028161151b91906143a9565b9050611530818461216b90919063ffffffff16565b82602001818152505060208161154691906143a9565b905061155b81846121d290919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff168152505060088161158791906143a9565b905061159c81846121d290919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff16815250506008816115c891906143a9565b90508083511461160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061403a565b60405180910390fd5b50919050565b61161b612036565b73ffffffffffffffffffffffffffffffffffffffff166116396111b3565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906140ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613f3a565b60405180910390fd5b6117088161203e565b50565b600060019054906101000a900460ff166117335760008054906101000a900460ff161561173c565b61173b612239565b5b61177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061405a565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117cb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6117ec604051806060016040528060268152602001614d476026913961224a565b6117f46122e3565b6117fc612344565b8760c960006101000a81548160ff021916908360ff160217905550600160cc60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160cd60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b85518160ff16101561198457600160ce6000888460ff1681518110611918577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197c90614531565b9150506118ca565b508360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611a2f604051806060016040528060268152602001614cfa6026913961224a565b8015611a505760008060016101000a81548160ff0219169083151502179055505b5050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611afe8363a9059cbb60e01b8484604051602401611a9c929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b505050565b6000611b317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b62612036565b73ffffffffffffffffffffffffffffffffffffffff16611b806111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd906140ba565b60405180910390fd5b50565b6000611be3611b03565b9050611bee84612476565b600083511180611bfb5750815b15611c0c57611c0a848461252f565b505b6000611c3a7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612613565b90508060000160009054906101000a900460ff16611da35760018160000160006101000a81548160ff021916908315150217905550611d068583604051602401611c849190613d5b565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061252f565b5060008160000160006101000a81548160ff021916908315150217905550611d2c611b03565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090613f1a565b60405180910390fd5b611da28561261d565b5b5050505050565b60cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d9061411a565b60405180910390fd5b611e41838383611e46565b505050565b611e528333308561266c565b611e7f8360ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f5565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08585600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611eed96959493929190613dff565b602060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3f9190613596565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611f8d33611a5a565b85604051602001611fa093929190613d1e565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401611fdd9392919061423e565b602060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202f9190613596565b5050505050565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060028261211391906143a9565b83511015612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d90613f9a565b60405180910390fd5b60008260028501015190508091505092915050565b600060208261217a91906143a9565b835110156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061407a565b60405180910390fd5b60008260208501015190508091505092915050565b60006008826121e191906143a9565b83511015612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b90613fda565b60405180910390fd5b60008260088501015190508091505092915050565b600061224430612816565b15905090565b6122e08160405160240161225e9190613eb8565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612829565b50565b600060019054906101000a900460ff16612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123299061419a565b60405180910390fd5b61233a612852565b6123426128a3565b565b600060019054906101000a900460ff16612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a9061419a565b60405180910390fd5b61239b612904565b6123a3612955565b565b6000612407826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129a69092919063ffffffff16565b9050600081511115612467578080602001905181019061242791906132f3565b612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d906141da565b60405180910390fd5b5b505050565b6000819050919050565b61247f81612816565b6124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b59061409a565b60405180910390fd5b806124eb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606061253a83612816565b612579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125709061413a565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516125a19190613c15565b600060405180830381855af49150503d80600081146125dc576040519150601f19603f3d011682016040523d82523d6000602084013e6125e1565b606091505b50915091506126098282604051806060016040528060278152602001614d20602791396129be565b9250505092915050565b6000819050919050565b61262681612476565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6126ef846323b872dd60e01b85858560405160240161268d93929190613d9f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612733929190613d76565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612783919061356d565b61278d91906143a9565b90506128108463095ea7b360e01b85846040516024016127ae929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff166128a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128989061419a565b60405180910390fd5b565b600060019054906101000a900460ff166128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e99061419a565b60405180910390fd5b6129026128fd612036565b61203e565b565b600060019054906101000a900460ff16612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a9061419a565b60405180910390fd5b565b600060019054906101000a900460ff166129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b9061419a565b60405180910390fd5b565b60606129b58484600085612a25565b90509392505050565b606083156129ce57829050612a1e565b6000835111156129e15782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a159190613eb8565b60405180910390fd5b9392505050565b606082471015612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6190613ffa565b60405180910390fd5b612a7385612b39565b612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99061415a565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612adb9190613c15565b60006040518083038185875af1925050503d8060008114612b18576040519150601f19603f3d011682016040523d82523d6000602084013e612b1d565b606091505b5091509150612b2d828286612b4c565b92505050949350505050565b600080823b905060008111915050919050565b60608315612b5c57829050612bac565b600083511115612b6f5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39190613eb8565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612c09612c04846142a1565b61427c565b90508083825260208201905082856020860282011115612c2857600080fd5b60005b85811015612c585781612c3e8882612d88565b845260208401935060208301925050600181019050612c2b565b5050509392505050565b6000612c75612c70846142cd565b61427c565b90508083825260208201905082856080860282011115612c9457600080fd5b60005b85811015612cc45781612caa8882612f0d565b845260208401935060808301925050600181019050612c97565b5050509392505050565b6000612ce1612cdc846142f9565b61427c565b905082815260208101848484011115612cf957600080fd5b612d048482856144be565b509392505050565b6000612d1f612d1a846142f9565b61427c565b905082815260208101848484011115612d3757600080fd5b612d428482856144cd565b509392505050565b6000612d5d612d588461432a565b61427c565b905082815260208101848484011115612d7557600080fd5b612d808482856144cd565b509392505050565b600081359050612d9781614c2a565b92915050565b600081519050612dac81614c2a565b92915050565b600082601f830112612dc357600080fd5b8135612dd3848260208601612bf6565b91505092915050565b600082601f830112612ded57600080fd5b8151612dfd848260208601612c62565b91505092915050565b600081519050612e1581614c41565b92915050565b600081359050612e2a81614c58565b92915050565b600081519050612e3f81614c58565b92915050565b600082601f830112612e5657600080fd5b8135612e66848260208601612cce565b91505092915050565b600082601f830112612e8057600080fd5b8151612e90848260208601612d0c565b91505092915050565b60008083601f840112612eab57600080fd5b8235905067ffffffffffffffff811115612ec457600080fd5b602083019150836001820283011115612edc57600080fd5b9250929050565b600082601f830112612ef457600080fd5b8151612f04848260208601612d4a565b91505092915050565b600060808284031215612f1f57600080fd5b612f29608061427c565b90506000612f3984828501612e30565b6000830152506020612f4d84828501612e30565b6020830152506040612f61848285016131fc565b6040830152506060612f75848285016131fc565b60608301525092915050565b600060e08284031215612f9357600080fd5b612f9d60e061427c565b90506000612fad848285016131fc565b6000830152506020612fc1848285016131a8565b6020830152506040612fd584828501612e30565b6040830152506060612fe98482850161317e565b6060830152506080612ffd84828501612e30565b60808301525060a06130118482850161317e565b60a08301525060c0613025848285016131a8565b60c08301525092915050565b6000610160828403121561304457600080fd5b61304f61016061427c565b9050600061305f848285016131fc565b6000830152506020613073848285016131bd565b6020830152506040613087848285016131bd565b604083015250606061309b8482850161317e565b60608301525060806130af84828501612e30565b60808301525060a06130c3848285016131d2565b60a08301525060c06130d7848285016131fc565b60c08301525060e082015167ffffffffffffffff8111156130f757600080fd5b61310384828501612e6f565b60e083015250610100613118848285016131bd565b6101008301525061012082015167ffffffffffffffff81111561313a57600080fd5b61314684828501612ddc565b6101208301525061014061315c84828501612e30565b6101408301525092915050565b60008135905061317881614c6f565b92915050565b60008151905061318d81614c86565b92915050565b6000813590506131a281614c9d565b92915050565b6000815190506131b781614c9d565b92915050565b6000815190506131cc81614cb4565b92915050565b6000815190506131e181614ccb565b92915050565b6000813590506131f681614ce2565b92915050565b60008151905061320b81614ce2565b92915050565b60006020828403121561322357600080fd5b600061323184828501612d88565b91505092915050565b60006020828403121561324c57600080fd5b600061325a84828501612d9d565b91505092915050565b6000806040838503121561327657600080fd5b600061328485828601612d88565b925050602083013567ffffffffffffffff8111156132a157600080fd5b6132ad85828601612e45565b9150509250929050565b600080604083850312156132ca57600080fd5b60006132d885828601612d88565b92505060206132e985828601613193565b9150509250929050565b60006020828403121561330557600080fd5b600061331384828501612e06565b91505092915050565b60006020828403121561332e57600080fd5b600061333c84828501612e1b565b91505092915050565b6000806040838503121561335857600080fd5b600061336685828601612e1b565b925050602061337785828601613169565b9150509250929050565b60006020828403121561339357600080fd5b600082013567ffffffffffffffff8111156133ad57600080fd5b6133b984828501612e45565b91505092915050565b600080604083850312156133d557600080fd5b600083013567ffffffffffffffff8111156133ef57600080fd5b6133fb85828601612e45565b925050602083013567ffffffffffffffff81111561341857600080fd5b61342485828601612e45565b9150509250929050565b6000806020838503121561344157600080fd5b600083013567ffffffffffffffff81111561345b57600080fd5b61346785828601612e99565b92509250509250929050565b600060e0828403121561348557600080fd5b600061349384828501612f81565b91505092915050565b6000806000606084860312156134b157600080fd5b600084015167ffffffffffffffff8111156134cb57600080fd5b6134d786828701613031565b93505060206134e886828701612e06565b925050604084015167ffffffffffffffff81111561350557600080fd5b61351186828701612ee3565b9150509250925092565b60006020828403121561352d57600080fd5b600061353b8482850161317e565b91505092915050565b60006020828403121561355657600080fd5b600061356484828501613193565b91505092915050565b60006020828403121561357f57600080fd5b600061358d848285016131a8565b91505092915050565b6000602082840312156135a857600080fd5b60006135b6848285016131d2565b91505092915050565b600080600080600080600060e0888a0312156135da57600080fd5b60006135e88a828b016131e7565b97505060206135f98a828b01612d88565b965050604061360a8a828b01612d88565b955050606088013567ffffffffffffffff81111561362757600080fd5b6136338a828b01612db2565b94505060806136448a828b01612d88565b93505060a06136558a828b01612d88565b92505060c06136668a828b01612e1b565b91505092959891949750929550565b61367e816143ff565b82525050565b61368d81614411565b82525050565b61369c8161441d565b82525050565b6136ab8161441d565b82525050565b6136c26136bd8261441d565b61455b565b82525050565b60006136d38261435b565b6136dd8185614371565b93506136ed8185602086016144cd565b6136f681614603565b840191505092915050565b600061370c8261435b565b6137168185614382565b93506137268185602086016144cd565b80840191505092915050565b61373b816144ac565b82525050565b600061374d838561439e565b935061375a8385846144be565b82840190509392505050565b600061377182614366565b61377b818561438d565b935061378b8185602086016144cd565b61379481614603565b840191505092915050565b60006137ac601e8361438d565b91506137b78261463b565b602082019050919050565b60006137cf60208361438d565b91506137da82614664565b602082019050919050565b60006137f2602f8361438d565b91506137fd8261468d565b604082019050919050565b600061381560268361438d565b9150613820826146dc565b604082019050919050565b600061383860238361438d565b91506138438261472b565b604082019050919050565b600061385b602c8361438d565b91506138668261477a565b604082019050919050565b600061387e60148361438d565b9150613889826147c9565b602082019050919050565b60006138a1602c8361438d565b91506138ac826147f2565b604082019050919050565b60006138c460148361438d565b91506138cf82614841565b602082019050919050565b60006138e760268361438d565b91506138f28261486a565b604082019050919050565b600061390a601f8361438d565b9150613915826148b9565b602082019050919050565b600061392d60308361438d565b9150613938826148e2565b604082019050919050565b6000613950602e8361438d565b915061395b82614931565b604082019050919050565b600061397360158361438d565b915061397e82614980565b602082019050919050565b6000613996602d8361438d565b91506139a1826149a9565b604082019050919050565b60006139b960208361438d565b91506139c4826149f8565b602082019050919050565b60006139dc60118361438d565b91506139e782614a21565b602082019050919050565b60006139ff60118361438d565b9150613a0a82614a4a565b602082019050919050565b6000613a22601c8361438d565b9150613a2d82614a73565b602082019050919050565b6000613a4560268361438d565b9150613a5082614a9c565b604082019050919050565b6000613a68601d8361438d565b9150613a7382614aeb565b602082019050919050565b6000613a8b602e8361438d565b9150613a9682614b14565b604082019050919050565b6000613aae602b8361438d565b9150613ab982614b63565b604082019050919050565b6000613ad1601f8361438d565b9150613adc82614bb2565b602082019050919050565b6000613af4602a8361438d565b9150613aff82614bdb565b604082019050919050565b608082016000820151613b206000850182613b76565b506020820151613b336020850182613693565b506040820151613b466040850182613bc9565b506060820151613b596060850182613bc9565b50505050565b613b70613b6b82614427565b614565565b82525050565b613b7f81614443565b82525050565b613b8e81614443565b82525050565b613b9d81614471565b82525050565b613bb4613baf82614471565b614577565b82525050565b613bc38161447b565b82525050565b613bd28161448b565b82525050565b613be9613be48261448b565b614581565b82525050565b613bf88161449f565b82525050565b613c0f613c0a8261449f565b614593565b82525050565b6000613c218284613701565b915081905092915050565b6000613c388285613bfe565b600182019150613c4882846136b1565b6020820191508190509392505050565b6000613c648287613bfe565b600182019150613c7482866136b1565b602082019150613c8482856136b1565b602082019150613c948284613b5f565b60108201915081905095945050505050565b6000613cb28287613bfe565b600182019150613cc282866136b1565b602082019150613cd3828486613741565b915081905095945050505050565b6000613ced8286613bfe565b600182019150613cfd82856136b1565b602082019150613d0d8284613ba3565b602082019150819050949350505050565b6000613d2a8286613bfe565b600182019150613d3a82856136b1565b602082019150613d4a8284613bd8565b600882019150819050949350505050565b6000602082019050613d706000830184613675565b92915050565b6000604082019050613d8b6000830185613675565b613d986020830184613675565b9392505050565b6000606082019050613db46000830186613675565b613dc16020830185613675565b613dce6040830184613b94565b949350505050565b6000604082019050613deb6000830185613675565b613df86020830184613b94565b9392505050565b600060c082019050613e146000830189613675565b613e216020830188613b94565b613e2e6040830187613b85565b613e3b60608301866136a2565b613e486080830185613732565b613e5560a0830184613bba565b979650505050505050565b6000602082019050613e756000830184613684565b92915050565b6000602082019050613e9060008301846136a2565b92915050565b60006020820190508181036000830152613eb081846136c8565b905092915050565b60006020820190508181036000830152613ed28184613766565b905092915050565b60006020820190508181036000830152613ef38161379f565b9050919050565b60006020820190508181036000830152613f13816137c2565b9050919050565b60006020820190508181036000830152613f33816137e5565b9050919050565b60006020820190508181036000830152613f5381613808565b9050919050565b60006020820190508181036000830152613f738161382b565b9050919050565b60006020820190508181036000830152613f938161384e565b9050919050565b60006020820190508181036000830152613fb381613871565b9050919050565b60006020820190508181036000830152613fd381613894565b9050919050565b60006020820190508181036000830152613ff3816138b7565b9050919050565b60006020820190508181036000830152614013816138da565b9050919050565b60006020820190508181036000830152614033816138fd565b9050919050565b6000602082019050818103600083015261405381613920565b9050919050565b6000602082019050818103600083015261407381613943565b9050919050565b6000602082019050818103600083015261409381613966565b9050919050565b600060208201905081810360008301526140b381613989565b9050919050565b600060208201905081810360008301526140d3816139ac565b9050919050565b600060208201905081810360008301526140f3816139cf565b9050919050565b60006020820190508181036000830152614113816139f2565b9050919050565b6000602082019050818103600083015261413381613a15565b9050919050565b6000602082019050818103600083015261415381613a38565b9050919050565b6000602082019050818103600083015261417381613a5b565b9050919050565b6000602082019050818103600083015261419381613a7e565b9050919050565b600060208201905081810360008301526141b381613aa1565b9050919050565b600060208201905081810360008301526141d381613ac4565b9050919050565b600060208201905081810360008301526141f381613ae7565b9050919050565b600060808201905061420f6000830184613b0a565b92915050565b600060408201905061422a6000830185613b85565b61423760208301846136a2565b9392505050565b60006060820190506142536000830186613bba565b818103602083015261426581856136c8565b90506142746040830184613bef565b949350505050565b6000614286614297565b90506142928282614500565b919050565b6000604051905090565b600067ffffffffffffffff8211156142bc576142bb6145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156142e8576142e76145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614314576143136145d4565b5b61431d82614603565b9050602081019050919050565b600067ffffffffffffffff821115614345576143446145d4565b5b61434e82614603565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143b482614471565b91506143bf83614471565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143f4576143f36145a5565b5b828201905092915050565b600061440a82614451565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006144b782614471565b9050919050565b82818337600083830152505050565b60005b838110156144eb5780820151818401526020810190506144d0565b838111156144fa576000848401525b50505050565b61450982614603565b810181811067ffffffffffffffff82111715614528576145276145d4565b5b80604052505050565b600061453c8261449f565b915060ff8214156145505761454f6145a5565b5b600182019050919050565b6000819050919050565b600061457082614614565b9050919050565b6000819050919050565b600061458c82614621565b9050919050565b600061459e8261462e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742077686974656c697374656420616e63686f7220737461626c6520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f6e6f742077686974656c697374656420737461626c6520746f6b656e00000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614c33816143ff565b8114614c3e57600080fd5b50565b614c4a81614411565b8114614c5557600080fd5b50565b614c618161441d565b8114614c6c57600080fd5b50565b614c7881614427565b8114614c8357600080fd5b50565b614c8f81614443565b8114614c9a57600080fd5b50565b614ca681614471565b8114614cb157600080fd5b50565b614cbd8161447b565b8114614cc857600080fd5b50565b614cd48161448b565b8114614cdf57600080fd5b50565b614ceb8161449f565b8114614cf657600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220de92904b2b70cb5afd9c52df4c9a2ebb40f18b7ab0c252007e06357a6207039d64736f6c63430008040033";
static readonly bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614cbe61007a60003960008181610d8901528181610e180152818161112e01526111bd0152614cbe6000f3fe60806040526004361061012a5760003560e01c80638cf98e85116100ab578063b0ec62081161006f578063b0ec62081461038f578063c785c756146103b8578063e8023895146103f5578063e83265731461041e578063ea30d8f51461045b578063f2fde38b146104985761012a565b80638cf98e85146102985780638da5cb5b146102d55780639cd164cd14610300578063afa7355614610329578063b032c6d1146103525761012a565b806349b95551116100f257806349b95551146101ea5780634f1ef286146102135780635a5e469d1461022f5780636133f98514610258578063715018a6146102815761012a565b806330fc143b1461012f5780633659cfe6146101585780633676206714610181578063372500ab146101aa57806347a7d107146101c1575b600080fd5b34801561013b57600080fd5b506101566004803603810190610151919061328b565b6104c1565b005b34801561016457600080fd5b5061017f600480360381019061017a919061303c565b610d87565b005b34801561018d57600080fd5b506101a860048036038101906101a39190613131565b610f36565b005b3480156101b657600080fd5b506101bf610f49565b005b3480156101cd57600080fd5b506101e860048036038101906101e39190613131565b61102e565b005b3480156101f657600080fd5b50610211600480360381019061020c91906132f7565b611041565b005b61022d600480360381019061022891906130dd565b61112c565b005b34801561023b57600080fd5b506102566004803603810190610251919061316d565b611269565b005b34801561026457600080fd5b5061027f600480360381019061027a919061308e565b61129d565b005b34801561028d57600080fd5b5061029661145f565b005b3480156102a457600080fd5b506102bf60048036038101906102ba919061303c565b6114e7565b6040516102cc9190613c7e565b60405180910390f35b3480156102e157600080fd5b506102ea611507565b6040516102f79190613b79565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613131565b611531565b005b34801561033557600080fd5b50610350600480360381019061034b919061320e565b611544565b005b34801561035e57600080fd5b506103796004803603810190610374919061303c565b61162f565b6040516103869190613c7e565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190613131565b61164f565b005b3480156103c457600080fd5b506103df60048036038101906103da919061303c565b611662565b6040516103ec9190613c7e565b60405180910390f35b34801561040157600080fd5b5061041c6004803603810190610417919061340d565b611682565b005b34801561042a57600080fd5b50610445600480360381019061044091906131e5565b61176a565b6040516104529190613c7e565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061324a565b61178a565b60405161048f9190613fd8565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba919061303c565b6118bf565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b815260040161054d9190613cb4565b60006040518083038186803b15801561056557600080fd5b505afa158015610579573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105a29190613365565b9250925092508181906105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e29190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff161461063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290613d18565b60405180910390fd5b60cb54836080015114610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90613f58565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090613f98565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006107298460e0015161178a565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107699190613cb4565b60006040518083038186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107be9190613365565b925092509250818190610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe9190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613ef8565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff16146108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90613ed8565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108f49190613cb4565b60e06040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610944919061333c565b905061094f306119b7565b816080015114610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90613e18565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613cf8565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b8152600401610a249190613c99565b60206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7491906131bc565b610ae4578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610ab19190613cb4565b600060405180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050505b6000808b73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6591906133e4565b61ffff16836060015161ffff161415610cc857826040015160001c915060008273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c2b9190613a0b565b600060405180830381855afa9150503d8060008114610c66576040519150601f19603f3d011682016040523d82523d6000602084013e610c6b565b606091505b50915050600081806020019051810190610c859190613488565b90508460200151925060088160ff161115610cc157600881610ca7919061437c565b600a610cb39190614204565b83610cbe9190614322565b92505b5050610d65565b8b73ffffffffffffffffffffffffffffffffffffffff16631ff1e286846060015185604001516040518363ffffffff1660e01b8152600401610d0b929190613ff3565b60206040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190613065565b9150826020015190505b610d7782886020015160001c836119da565b5050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e55611a60565b73ffffffffffffffffffffffffffffffffffffffff1614610eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea290613db8565b60405180910390fd5b610eb481611ab7565b610f3381600067ffffffffffffffff811115610ef9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610f2b5781602001600182028036833780820191505090505b506000611b36565b50565b610f45828260c0600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610f99336119b7565b604051602001610faa929190613a3d565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401610fd99392919061401c565b602060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061345f565b50565b61103d82826080600117611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317611091336119b7565b86866040516020016110a69493929190613b01565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016110d59392919061401c565b602060405180830381600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611127919061345f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111fa611a60565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613db8565b60405180910390fd5b61125982611ab7565b61126582826001611b36565b5050565b61129883838360405160200161127f9190613a22565b60405160208183030381529060405260c0600217611d27565b505050565b600060019054906101000a900460ff166112c55760008054906101000a900460ff16156112ce565b6112cd611f0c565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613e58565b60405180910390fd5b60008060019054906101000a900460ff16159050801561135d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61137e604051806060016040528060268152602001614c6360269139611f1d565b611386611fb6565b61138e612017565b8360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611438604051806060016040528060268152602001614c1660269139611f1d565b80156114595760008060016101000a81548160ff0219169083151502179055505b50505050565b611467612078565b73ffffffffffffffffffffffffffffffffffffffff16611485611507565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613eb8565b60405180910390fd5b6114e56000612080565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61154082826080600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600017611594336119b7565b86866040516020016115a99493929190613a69565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016115d89392919061401c565b602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162a919061345f565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b61165e828260c0600117611d07565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f460406001176116d2336119b7565b856040516020016116e593929190613b3c565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016117149392919061401c565b602060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611766919061345f565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b611792612a89565b60006117a7818461214690919063ffffffff16565b826000019061ffff16908161ffff16815250506002816117c7919061415b565b90506117dc81846121ad90919063ffffffff16565b8260200181815250506020816117f2919061415b565b9050611807818461221490919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611833919061415b565b9050611848818461221490919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611874919061415b565b9050808351146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613e38565b60405180910390fd5b50919050565b6118c7612078565b73ffffffffffffffffffffffffffffffffffffffff166118e5611507565b73ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613d58565b60405180910390fd5b6119b481612080565b50565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611a5b8363a9059cbb60e01b84846040516024016119f9929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b505050565b6000611a8e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611abf612078565b73ffffffffffffffffffffffffffffffffffffffff16611add611507565b73ffffffffffffffffffffffffffffffffffffffff1614611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90613eb8565b60405180910390fd5b50565b6000611b40611a60565b9050611b4b8461234c565b600083511180611b585750815b15611b6957611b678484612405565b505b6000611b977f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6124e9565b90508060000160009054906101000a900460ff16611d005760018160000160006101000a81548160ff021916908315150217905550611c638583604051602401611be19190613b79565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612405565b5060008160000160006101000a81548160ff021916908315150217905550611c89611a60565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613d38565b60405180910390fd5b611cff856124f3565b5b5050505050565b611d2283836040518060200160405280600081525084611d27565b505050565b611d3384333086612542565b611d608460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856125cb565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08686600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611dce96959493929190613c1d565b602060405180830381600087803b158015611de857600080fd5b505af1158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e20919061345f565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611e6e336119b7565b8786604051602001611e839493929190613ab7565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401611eb29392919061401c565b602060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f04919061345f565b505050505050565b6000611f17306126ec565b15905090565b611fb381604051602401611f319190613cd6565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126ff565b50565b600060019054906101000a900460ff16612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613f78565b60405180910390fd5b61200d612728565b612015612779565b565b600060019054906101000a900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613f78565b60405180910390fd5b61206e6127da565b61207661282b565b565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600282612155919061415b565b83511015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613d98565b60405180910390fd5b60008260028501015190508091505092915050565b60006020826121bc919061415b565b835110156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f690613e78565b60405180910390fd5b60008260208501015190508091505092915050565b6000600882612223919061415b565b83511015612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90613dd8565b60405180910390fd5b60008260088501015190508091505092915050565b60006122dd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661287c9092919063ffffffff16565b905060008151111561233d57808060200190518101906122fd91906131bc565b61233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390613fb8565b60405180910390fd5b5b505050565b6000819050919050565b612355816126ec565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613e98565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060612410836126ec565b61244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244690613f18565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516124779190613a0b565b600060405180830381855af49150503d80600081146124b2576040519150601f19603f3d011682016040523d82523d6000602084013e6124b7565b606091505b50915091506124df8282604051806060016040528060278152602001614c3c60279139612894565b9250505092915050565b6000819050919050565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6125c5846323b872dd60e01b85858560405160240161256393929190613bbd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612609929190613b94565b60206040518083038186803b15801561262157600080fd5b505afa158015612635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126599190613436565b612663919061415b565b90506126e68463095ea7b360e01b8584604051602401612684929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff16612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90613f78565b60405180910390fd5b565b600060019054906101000a900460ff166127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613f78565b60405180910390fd5b6127d86127d3612078565b612080565b565b600060019054906101000a900460ff16612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090613f78565b60405180910390fd5b565b600060019054906101000a900460ff1661287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287190613f78565b60405180910390fd5b565b606061288b84846000856128fb565b90509392505050565b606083156128a4578290506128f4565b6000835111156128b75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb9190613cd6565b60405180910390fd5b9392505050565b606082471015612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790613df8565b60405180910390fd5b61294985612a0f565b612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90613f38565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129b19190613a0b565b60006040518083038185875af1925050503d80600081146129ee576040519150601f19603f3d011682016040523d82523d6000602084013e6129f3565b606091505b5091509150612a03828286612a22565b92505050949350505050565b600080823b905060008111915050919050565b60608315612a3257829050612a82565b600083511115612a455782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a799190613cd6565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612adf612ada8461407f565b61405a565b90508083825260208201905082856080860282011115612afe57600080fd5b60005b85811015612b2e5781612b148882612d4d565b845260208401935060808301925050600181019050612b01565b5050509392505050565b6000612b4b612b46846140ab565b61405a565b905082815260208101848484011115612b6357600080fd5b612b6e84828561446f565b509392505050565b6000612b89612b84846140ab565b61405a565b905082815260208101848484011115612ba157600080fd5b612bac84828561447e565b509392505050565b6000612bc7612bc2846140dc565b61405a565b905082815260208101848484011115612bdf57600080fd5b612bea84828561447e565b509392505050565b600081359050612c0181614b46565b92915050565b600081519050612c1681614b46565b92915050565b600082601f830112612c2d57600080fd5b8151612c3d848260208601612acc565b91505092915050565b600081519050612c5581614b5d565b92915050565b600081359050612c6a81614b74565b92915050565b600081519050612c7f81614b74565b92915050565b600082601f830112612c9657600080fd5b8135612ca6848260208601612b38565b91505092915050565b600082601f830112612cc057600080fd5b8151612cd0848260208601612b76565b91505092915050565b60008083601f840112612ceb57600080fd5b8235905067ffffffffffffffff811115612d0457600080fd5b602083019150836001820283011115612d1c57600080fd5b9250929050565b600082601f830112612d3457600080fd5b8151612d44848260208601612bb4565b91505092915050565b600060808284031215612d5f57600080fd5b612d69608061405a565b90506000612d7984828501612c70565b6000830152506020612d8d84828501612c70565b6020830152506040612da184828501613027565b6040830152506060612db584828501613027565b60608301525092915050565b600060e08284031215612dd357600080fd5b612ddd60e061405a565b90506000612ded84828501613027565b6000830152506020612e0184828501612fe8565b6020830152506040612e1584828501612c70565b6040830152506060612e2984828501612fbe565b6060830152506080612e3d84828501612c70565b60808301525060a0612e5184828501612fbe565b60a08301525060c0612e6584828501612fe8565b60c08301525092915050565b60006101608284031215612e8457600080fd5b612e8f61016061405a565b90506000612e9f84828501613027565b6000830152506020612eb384828501612ffd565b6020830152506040612ec784828501612ffd565b6040830152506060612edb84828501612fbe565b6060830152506080612eef84828501612c70565b60808301525060a0612f0384828501613012565b60a08301525060c0612f1784828501613027565b60c08301525060e082015167ffffffffffffffff811115612f3757600080fd5b612f4384828501612caf565b60e083015250610100612f5884828501612ffd565b6101008301525061012082015167ffffffffffffffff811115612f7a57600080fd5b612f8684828501612c1c565b61012083015250610140612f9c84828501612c70565b6101408301525092915050565b600081359050612fb881614b8b565b92915050565b600081519050612fcd81614ba2565b92915050565b600081359050612fe281614bb9565b92915050565b600081519050612ff781614bb9565b92915050565b60008151905061300c81614bd0565b92915050565b60008151905061302181614be7565b92915050565b60008151905061303681614bfe565b92915050565b60006020828403121561304e57600080fd5b600061305c84828501612bf2565b91505092915050565b60006020828403121561307757600080fd5b600061308584828501612c07565b91505092915050565b6000806000606084860312156130a357600080fd5b60006130b186828701612bf2565b93505060206130c286828701612bf2565b92505060406130d386828701612c5b565b9150509250925092565b600080604083850312156130f057600080fd5b60006130fe85828601612bf2565b925050602083013567ffffffffffffffff81111561311b57600080fd5b61312785828601612c85565b9150509250929050565b6000806040838503121561314457600080fd5b600061315285828601612bf2565b925050602061316385828601612fd3565b9150509250929050565b60008060006060848603121561318257600080fd5b600061319086828701612bf2565b93505060206131a186828701612fd3565b92505060406131b286828701612fd3565b9150509250925092565b6000602082840312156131ce57600080fd5b60006131dc84828501612c46565b91505092915050565b6000602082840312156131f757600080fd5b600061320584828501612c5b565b91505092915050565b6000806040838503121561322157600080fd5b600061322f85828601612c5b565b925050602061324085828601612fa9565b9150509250929050565b60006020828403121561325c57600080fd5b600082013567ffffffffffffffff81111561327657600080fd5b61328284828501612c85565b91505092915050565b6000806040838503121561329e57600080fd5b600083013567ffffffffffffffff8111156132b857600080fd5b6132c485828601612c85565b925050602083013567ffffffffffffffff8111156132e157600080fd5b6132ed85828601612c85565b9150509250929050565b6000806020838503121561330a57600080fd5b600083013567ffffffffffffffff81111561332457600080fd5b61333085828601612cd9565b92509250509250929050565b600060e0828403121561334e57600080fd5b600061335c84828501612dc1565b91505092915050565b60008060006060848603121561337a57600080fd5b600084015167ffffffffffffffff81111561339457600080fd5b6133a086828701612e71565b93505060206133b186828701612c46565b925050604084015167ffffffffffffffff8111156133ce57600080fd5b6133da86828701612d23565b9150509250925092565b6000602082840312156133f657600080fd5b600061340484828501612fbe565b91505092915050565b60006020828403121561341f57600080fd5b600061342d84828501612fd3565b91505092915050565b60006020828403121561344857600080fd5b600061345684828501612fe8565b91505092915050565b60006020828403121561347157600080fd5b600061347f84828501613012565b91505092915050565b60006020828403121561349a57600080fd5b60006134a884828501613027565b91505092915050565b6134ba816143b0565b82525050565b6134c9816143c2565b82525050565b6134d8816143ce565b82525050565b6134e7816143ce565b82525050565b6134fe6134f9826143ce565b6144e2565b82525050565b600061350f8261410d565b6135198185614123565b935061352981856020860161447e565b6135328161458a565b840191505092915050565b60006135488261410d565b6135528185614134565b935061356281856020860161447e565b80840191505092915050565b6135778161445d565b82525050565b60006135898385614150565b935061359683858461446f565b82840190509392505050565b60006135ad82614118565b6135b7818561413f565b93506135c781856020860161447e565b6135d08161458a565b840191505092915050565b60006135e8601e8361413f565b91506135f3826145cf565b602082019050919050565b600061360b60208361413f565b9150613616826145f8565b602082019050919050565b600061362e602f8361413f565b915061363982614621565b604082019050919050565b600061365160268361413f565b915061365c82614670565b604082019050919050565b6000613674602c8361413f565b915061367f826146bf565b604082019050919050565b600061369760148361413f565b91506136a28261470e565b602082019050919050565b60006136ba602c8361413f565b91506136c582614737565b604082019050919050565b60006136dd60148361413f565b91506136e882614786565b602082019050919050565b600061370060268361413f565b915061370b826147af565b604082019050919050565b6000613723601f8361413f565b915061372e826147fe565b602082019050919050565b600061374660308361413f565b915061375182614827565b604082019050919050565b6000613769602e8361413f565b915061377482614876565b604082019050919050565b600061378c60158361413f565b9150613797826148c5565b602082019050919050565b60006137af602d8361413f565b91506137ba826148ee565b604082019050919050565b60006137d260208361413f565b91506137dd8261493d565b602082019050919050565b60006137f560118361413f565b915061380082614966565b602082019050919050565b600061381860118361413f565b91506138238261498f565b602082019050919050565b600061383b60268361413f565b9150613846826149b8565b604082019050919050565b600061385e601d8361413f565b915061386982614a07565b602082019050919050565b6000613881602e8361413f565b915061388c82614a30565b604082019050919050565b60006138a4602b8361413f565b91506138af82614a7f565b604082019050919050565b60006138c7601f8361413f565b91506138d282614ace565b602082019050919050565b60006138ea602a8361413f565b91506138f582614af7565b604082019050919050565b608082016000820151613916600085018261396c565b50602082015161392960208501826134cf565b50604082015161393c60408501826139bf565b50606082015161394f60608501826139bf565b50505050565b613966613961826143d8565b6144ec565b82525050565b613975816143f4565b82525050565b613984816143f4565b82525050565b61399381614422565b82525050565b6139aa6139a582614422565b6144fe565b82525050565b6139b98161442c565b82525050565b6139c88161443c565b82525050565b6139df6139da8261443c565b614508565b82525050565b6139ee81614450565b82525050565b613a05613a0082614450565b61451a565b82525050565b6000613a17828461353d565b915081905092915050565b6000613a2e8284613999565b60208201915081905092915050565b6000613a4982856139f4565b600182019150613a5982846134ed565b6020820191508190509392505050565b6000613a7582876139f4565b600182019150613a8582866134ed565b602082019150613a9582856134ed565b602082019150613aa58284613955565b60108201915081905095945050505050565b6000613ac382876139f4565b600182019150613ad382866134ed565b602082019150613ae3828561353d565b9150613aef82846139ce565b60088201915081905095945050505050565b6000613b0d82876139f4565b600182019150613b1d82866134ed565b602082019150613b2e82848661357d565b915081905095945050505050565b6000613b4882866139f4565b600182019150613b5882856134ed565b602082019150613b688284613999565b602082019150819050949350505050565b6000602082019050613b8e60008301846134b1565b92915050565b6000604082019050613ba960008301856134b1565b613bb660208301846134b1565b9392505050565b6000606082019050613bd260008301866134b1565b613bdf60208301856134b1565b613bec604083018461398a565b949350505050565b6000604082019050613c0960008301856134b1565b613c16602083018461398a565b9392505050565b600060c082019050613c3260008301896134b1565b613c3f602083018861398a565b613c4c604083018761397b565b613c5960608301866134de565b613c66608083018561356e565b613c7360a08301846139b0565b979650505050505050565b6000602082019050613c9360008301846134c0565b92915050565b6000602082019050613cae60008301846134de565b92915050565b60006020820190508181036000830152613cce8184613504565b905092915050565b60006020820190508181036000830152613cf081846135a2565b905092915050565b60006020820190508181036000830152613d11816135db565b9050919050565b60006020820190508181036000830152613d31816135fe565b9050919050565b60006020820190508181036000830152613d5181613621565b9050919050565b60006020820190508181036000830152613d7181613644565b9050919050565b60006020820190508181036000830152613d9181613667565b9050919050565b60006020820190508181036000830152613db18161368a565b9050919050565b60006020820190508181036000830152613dd1816136ad565b9050919050565b60006020820190508181036000830152613df1816136d0565b9050919050565b60006020820190508181036000830152613e11816136f3565b9050919050565b60006020820190508181036000830152613e3181613716565b9050919050565b60006020820190508181036000830152613e5181613739565b9050919050565b60006020820190508181036000830152613e718161375c565b9050919050565b60006020820190508181036000830152613e918161377f565b9050919050565b60006020820190508181036000830152613eb1816137a2565b9050919050565b60006020820190508181036000830152613ed1816137c5565b9050919050565b60006020820190508181036000830152613ef1816137e8565b9050919050565b60006020820190508181036000830152613f118161380b565b9050919050565b60006020820190508181036000830152613f318161382e565b9050919050565b60006020820190508181036000830152613f5181613851565b9050919050565b60006020820190508181036000830152613f7181613874565b9050919050565b60006020820190508181036000830152613f9181613897565b9050919050565b60006020820190508181036000830152613fb1816138ba565b9050919050565b60006020820190508181036000830152613fd1816138dd565b9050919050565b6000608082019050613fed6000830184613900565b92915050565b6000604082019050614008600083018561397b565b61401560208301846134de565b9392505050565b600060608201905061403160008301866139b0565b81810360208301526140438185613504565b905061405260408301846139e5565b949350505050565b6000614064614075565b905061407082826144b1565b919050565b6000604051905090565b600067ffffffffffffffff82111561409a5761409961455b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140c6576140c561455b565b5b6140cf8261458a565b9050602081019050919050565b600067ffffffffffffffff8211156140f7576140f661455b565b5b6141008261458a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061416682614422565b915061417183614422565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141a6576141a561452c565b5b828201905092915050565b6000808291508390505b60018511156141fb578086048111156141d7576141d661452c565b5b60018516156141e65780820291505b80810290506141f4856145c2565b94506141bb565b94509492505050565b600061420f82614422565b915061421a83614450565b92506142477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461424f565b905092915050565b60008261425f576001905061431b565b8161426d576000905061431b565b8160018114614283576002811461428d576142bc565b600191505061431b565b60ff84111561429f5761429e61452c565b5b8360020a9150848211156142b6576142b561452c565b5b5061431b565b5060208310610133831016604e8410600b84101617156142f15782820a9050838111156142ec576142eb61452c565b5b61431b565b6142fe84848460016141b1565b925090508184048111156143155761431461452c565b5b81810290505b9392505050565b600061432d82614422565b915061433883614422565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143715761437061452c565b5b828202905092915050565b600061438782614450565b915061439283614450565b9250828210156143a5576143a461452c565b5b828203905092915050565b60006143bb82614402565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061446882614422565b9050919050565b82818337600083830152505050565b60005b8381101561449c578082015181840152602081019050614481565b838111156144ab576000848401525b50505050565b6144ba8261458a565b810181811067ffffffffffffffff821117156144d9576144d861455b565b5b80604052505050565b6000819050919050565b60006144f78261459b565b9050919050565b6000819050919050565b6000614513826145a8565b9050919050565b6000614525826145b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b60008160011c9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614b4f816143b0565b8114614b5a57600080fd5b50565b614b66816143c2565b8114614b7157600080fd5b50565b614b7d816143ce565b8114614b8857600080fd5b50565b614b94816143d8565b8114614b9f57600080fd5b50565b614bab816143f4565b8114614bb657600080fd5b50565b614bc281614422565b8114614bcd57600080fd5b50565b614bd98161442c565b8114614be457600080fd5b50565b614bf08161443c565b8114614bfb57600080fd5b50565b614c0781614450565b8114614c1257600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220fb4b237924672737884526e92a0a134e8d91ee41928648e35332b574cafaad6364736f6c63430008040033";
static readonly abi: ({

@@ -20,0 +20,0 @@ anonymous: boolean;

@@ -130,9 +130,4 @@ /* Autogenerated file. Do not edit manually. */

{
internalType: "uint8",
name: "_consistencyLevel",
type: "uint8",
},
{
internalType: "address",
name: "_wust",
name: "_wormholeCoreBridge",
type: "address",

@@ -142,27 +137,35 @@ },

internalType: "address",
name: "_aust",
name: "_wormholeTokenBridge",
type: "address",
},
{
internalType: "address[]",
name: "_collateralTokens",
type: "address[]",
internalType: "bytes32",
name: "_terraAnchorBridgeAddress",
type: "bytes32",
},
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "_wormholeCoreBridge",
name: "token",
type: "address",
},
{
internalType: "address",
name: "_wormholeTokenBridge",
type: "address",
internalType: "uint256",
name: "lockAmount",
type: "uint256",
},
{
internalType: "bytes32",
name: "_terraAnchorBridgeAddress",
type: "bytes32",
internalType: "uint256",
name: "borrowAmount",
type: "uint256",
},
],
name: "initialize",
name: "lockAndBorrow",
outputs: [],

@@ -438,3 +441,3 @@ stateMutability: "nonpayable",

];
const _bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614da261007a60003960008181610c0f01528181610c9e01528181610fd0015261105f0152614da26000f3fe60806040526004361061011f5760003560e01c80639cd164cd116100a0578063e802389511610064578063e802389514610398578063e8326573146103c1578063ea30d8f5146103fe578063f2fde38b1461043b578063fe36c951146104645761011f565b80639cd164cd146102a3578063afa73556146102cc578063b032c6d1146102f5578063b0ec620814610332578063c785c7561461035b5761011f565b806349b95551116100e757806349b95551146101df5780634f1ef28614610208578063715018a6146102245780638cf98e851461023b5780638da5cb5b146102785761011f565b806330fc143b146101245780633659cfe61461014d5780633676206714610176578063372500ab1461019f57806347a7d107146101b6575b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906133c2565b61048d565b005b34801561015957600080fd5b50610174600480360381019061016f9190613211565b610c0d565b005b34801561018257600080fd5b5061019d600480360381019061019891906132b7565b610dbc565b005b3480156101ab57600080fd5b506101b4610dcf565b005b3480156101c257600080fd5b506101dd60048036038101906101d891906132b7565b610ec2565b005b3480156101eb57600080fd5b506102066004803603810190610201919061342e565b610ed5565b005b610222600480360381019061021d9190613263565b610fce565b005b34801561023057600080fd5b5061023961110b565b005b34801561024757600080fd5b50610262600480360381019061025d9190613211565b611193565b60405161026f9190613e60565b60405180910390f35b34801561028457600080fd5b5061028d6111b3565b60405161029a9190613d5b565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c591906132b7565b6111dd565b005b3480156102d857600080fd5b506102f360048036038101906102ee9190613345565b6111f0565b005b34801561030157600080fd5b5061031c60048036038101906103179190613211565b6112e9565b6040516103299190613e60565b60405180910390f35b34801561033e57600080fd5b50610359600480360381019061035491906132b7565b611309565b005b34801561036757600080fd5b50610382600480360381019061037d9190613211565b6113a8565b60405161038f9190613e60565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613544565b6113c8565b005b3480156103cd57600080fd5b506103e860048036038101906103e3919061331c565b6114be565b6040516103f59190613e60565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613381565b6114de565b60405161043291906141fa565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190613211565b611613565b005b34801561047057600080fd5b5061048b600480360381019061048691906135bf565b61170b565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b81526004016105199190613e96565b60006040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061056e919061349c565b9250925092508181906105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fe90613efa565b60405180910390fd5b60cb5483608001511461064f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106469061417a565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac906141ba565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006106f58460e001516114de565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107359190613e96565b60006040518083038186803b15801561074d57600080fd5b505afa158015610761573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061078a919061349c565b9250925092508181906107d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca9190613eb8565b60405180910390fd5b50600361ffff16836060015161ffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a906140fa565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff1614610881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610878906140da565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108c09190613e96565b60e06040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613473565b905061091b30611a5a565b816080015114610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109579061401a565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990613eda565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b81526004016109f09190613e7b565b60206040518083038186803b158015610a0857600080fd5b505afa158015610a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4091906132f3565b610ab0578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610a7d9190613e96565b600060405180830381600087803b158015610a9757600080fd5b505af1158015610aab573d6000803e3d6000fd5b505050505b60008a73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610af857600080fd5b505afa158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b30919061351b565b61ffff16826060015161ffff161415610b5257816040015160001c9050610be8565b8a73ffffffffffffffffffffffffffffffffffffffff16631ff1e286836060015184604001516040518363ffffffff1660e01b8152600401610b95929190614215565b60206040518083038186803b158015610bad57600080fd5b505afa158015610bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be5919061323a565b90505b610bfe81876020015160001c8460200151611a7d565b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cdb611b03565b73ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890613fba565b60405180910390fd5b610d3a81611b5a565b610db981600067ffffffffffffffff811115610d7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610db15781602001600182028036833780820191505090505b506000611bd9565b50565b610dcb828260c0600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610e1f33611a5a565b604051602001610e30929190613c2c565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610e6d9392919061423e565b602060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebf9190613596565b50565b610ed182826080600117611e46565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317610f2533611a5a565b8686604051602001610f3a9493929190613ca6565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401610f779392919061423e565b602060405180830381600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc99190613596565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16141561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490613f7a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661109c611b03565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990613fba565b60405180910390fd5b6110fb82611b5a565b61110782826001611bd9565b5050565b611113612036565b73ffffffffffffffffffffffffffffffffffffffff166111316111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906140ba565b60405180910390fd5b611191600061203e565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ec82826080600017611daa565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060001761124033611a5a565b86866040516020016112559493929190613c58565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016112929392919061423e565b602060405180830381600087803b1580156112ac57600080fd5b505af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e49190613596565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b60cd60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138c90613f5a565b60405180910390fd5b6113a4828260c0600117611e46565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f4604060011761141833611a5a565b8560405160200161142b93929190613ce1565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b81526004016114689392919061423e565b602060405180830381600087803b15801561148257600080fd5b505af1158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613596565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b6114e6612bb3565b60006114fb818461210490919063ffffffff16565b826000019061ffff16908161ffff168152505060028161151b91906143a9565b9050611530818461216b90919063ffffffff16565b82602001818152505060208161154691906143a9565b905061155b81846121d290919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff168152505060088161158791906143a9565b905061159c81846121d290919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff16815250506008816115c891906143a9565b90508083511461160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061403a565b60405180910390fd5b50919050565b61161b612036565b73ffffffffffffffffffffffffffffffffffffffff166116396111b3565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611686906140ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f690613f3a565b60405180910390fd5b6117088161203e565b50565b600060019054906101000a900460ff166117335760008054906101000a900460ff161561173c565b61173b612239565b5b61177b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117729061405a565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117cb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6117ec604051806060016040528060268152602001614d476026913961224a565b6117f46122e3565b6117fc612344565b8760c960006101000a81548160ff021916908360ff160217905550600160cc60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160cd60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b85518160ff16101561198457600160ce6000888460ff1681518110611918577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061197c90614531565b9150506118ca565b508360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611a2f604051806060016040528060268152602001614cfa6026913961224a565b8015611a505760008060016101000a81548160ff0219169083151502179055505b5050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611afe8363a9059cbb60e01b8484604051602401611a9c929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b505050565b6000611b317f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b62612036565b73ffffffffffffffffffffffffffffffffffffffff16611b806111b3565b73ffffffffffffffffffffffffffffffffffffffff1614611bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcd906140ba565b60405180910390fd5b50565b6000611be3611b03565b9050611bee84612476565b600083511180611bfb5750815b15611c0c57611c0a848461252f565b505b6000611c3a7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612613565b90508060000160009054906101000a900460ff16611da35760018160000160006101000a81548160ff021916908315150217905550611d068583604051602401611c849190613d5b565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061252f565b5060008160000160006101000a81548160ff021916908315150217905550611d2c611b03565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090613f1a565b60405180910390fd5b611da28561261d565b5b5050505050565b60cc60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d9061411a565b60405180910390fd5b611e41838383611e46565b505050565b611e528333308561266c565b611e7f8360ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f5565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08585600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611eed96959493929190613dff565b602060405180830381600087803b158015611f0757600080fd5b505af1158015611f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3f9190613596565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611f8d33611a5a565b85604051602001611fa093929190613d1e565b60405160208183030381529060405260c960009054906101000a900460ff166040518463ffffffff1660e01b8152600401611fdd9392919061423e565b602060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202f9190613596565b5050505050565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060028261211391906143a9565b83511015612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d90613f9a565b60405180910390fd5b60008260028501015190508091505092915050565b600060208261217a91906143a9565b835110156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b49061407a565b60405180910390fd5b60008260208501015190508091505092915050565b60006008826121e191906143a9565b83511015612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b90613fda565b60405180910390fd5b60008260088501015190508091505092915050565b600061224430612816565b15905090565b6122e08160405160240161225e9190613eb8565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612829565b50565b600060019054906101000a900460ff16612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123299061419a565b60405180910390fd5b61233a612852565b6123426128a3565b565b600060019054906101000a900460ff16612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a9061419a565b60405180910390fd5b61239b612904565b6123a3612955565b565b6000612407826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129a69092919063ffffffff16565b9050600081511115612467578080602001905181019061242791906132f3565b612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d906141da565b60405180910390fd5b5b505050565b6000819050919050565b61247f81612816565b6124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b59061409a565b60405180910390fd5b806124eb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61246c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606061253a83612816565b612579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125709061413a565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516125a19190613c15565b600060405180830381855af49150503d80600081146125dc576040519150601f19603f3d011682016040523d82523d6000602084013e6125e1565b606091505b50915091506126098282604051806060016040528060278152602001614d20602791396129be565b9250505092915050565b6000819050919050565b61262681612476565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6126ef846323b872dd60e01b85858560405160240161268d93929190613d9f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612733929190613d76565b60206040518083038186803b15801561274b57600080fd5b505afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612783919061356d565b61278d91906143a9565b90506128108463095ea7b360e01b85846040516024016127ae929190613dd6565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123a5565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff166128a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128989061419a565b60405180910390fd5b565b600060019054906101000a900460ff166128f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e99061419a565b60405180910390fd5b6129026128fd612036565b61203e565b565b600060019054906101000a900460ff16612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a9061419a565b60405180910390fd5b565b600060019054906101000a900460ff166129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b9061419a565b60405180910390fd5b565b60606129b58484600085612a25565b90509392505050565b606083156129ce57829050612a1e565b6000835111156129e15782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a159190613eb8565b60405180910390fd5b9392505050565b606082471015612a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6190613ffa565b60405180910390fd5b612a7385612b39565b612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99061415a565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612adb9190613c15565b60006040518083038185875af1925050503d8060008114612b18576040519150601f19603f3d011682016040523d82523d6000602084013e612b1d565b606091505b5091509150612b2d828286612b4c565b92505050949350505050565b600080823b905060008111915050919050565b60608315612b5c57829050612bac565b600083511115612b6f5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39190613eb8565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612c09612c04846142a1565b61427c565b90508083825260208201905082856020860282011115612c2857600080fd5b60005b85811015612c585781612c3e8882612d88565b845260208401935060208301925050600181019050612c2b565b5050509392505050565b6000612c75612c70846142cd565b61427c565b90508083825260208201905082856080860282011115612c9457600080fd5b60005b85811015612cc45781612caa8882612f0d565b845260208401935060808301925050600181019050612c97565b5050509392505050565b6000612ce1612cdc846142f9565b61427c565b905082815260208101848484011115612cf957600080fd5b612d048482856144be565b509392505050565b6000612d1f612d1a846142f9565b61427c565b905082815260208101848484011115612d3757600080fd5b612d428482856144cd565b509392505050565b6000612d5d612d588461432a565b61427c565b905082815260208101848484011115612d7557600080fd5b612d808482856144cd565b509392505050565b600081359050612d9781614c2a565b92915050565b600081519050612dac81614c2a565b92915050565b600082601f830112612dc357600080fd5b8135612dd3848260208601612bf6565b91505092915050565b600082601f830112612ded57600080fd5b8151612dfd848260208601612c62565b91505092915050565b600081519050612e1581614c41565b92915050565b600081359050612e2a81614c58565b92915050565b600081519050612e3f81614c58565b92915050565b600082601f830112612e5657600080fd5b8135612e66848260208601612cce565b91505092915050565b600082601f830112612e8057600080fd5b8151612e90848260208601612d0c565b91505092915050565b60008083601f840112612eab57600080fd5b8235905067ffffffffffffffff811115612ec457600080fd5b602083019150836001820283011115612edc57600080fd5b9250929050565b600082601f830112612ef457600080fd5b8151612f04848260208601612d4a565b91505092915050565b600060808284031215612f1f57600080fd5b612f29608061427c565b90506000612f3984828501612e30565b6000830152506020612f4d84828501612e30565b6020830152506040612f61848285016131fc565b6040830152506060612f75848285016131fc565b60608301525092915050565b600060e08284031215612f9357600080fd5b612f9d60e061427c565b90506000612fad848285016131fc565b6000830152506020612fc1848285016131a8565b6020830152506040612fd584828501612e30565b6040830152506060612fe98482850161317e565b6060830152506080612ffd84828501612e30565b60808301525060a06130118482850161317e565b60a08301525060c0613025848285016131a8565b60c08301525092915050565b6000610160828403121561304457600080fd5b61304f61016061427c565b9050600061305f848285016131fc565b6000830152506020613073848285016131bd565b6020830152506040613087848285016131bd565b604083015250606061309b8482850161317e565b60608301525060806130af84828501612e30565b60808301525060a06130c3848285016131d2565b60a08301525060c06130d7848285016131fc565b60c08301525060e082015167ffffffffffffffff8111156130f757600080fd5b61310384828501612e6f565b60e083015250610100613118848285016131bd565b6101008301525061012082015167ffffffffffffffff81111561313a57600080fd5b61314684828501612ddc565b6101208301525061014061315c84828501612e30565b6101408301525092915050565b60008135905061317881614c6f565b92915050565b60008151905061318d81614c86565b92915050565b6000813590506131a281614c9d565b92915050565b6000815190506131b781614c9d565b92915050565b6000815190506131cc81614cb4565b92915050565b6000815190506131e181614ccb565b92915050565b6000813590506131f681614ce2565b92915050565b60008151905061320b81614ce2565b92915050565b60006020828403121561322357600080fd5b600061323184828501612d88565b91505092915050565b60006020828403121561324c57600080fd5b600061325a84828501612d9d565b91505092915050565b6000806040838503121561327657600080fd5b600061328485828601612d88565b925050602083013567ffffffffffffffff8111156132a157600080fd5b6132ad85828601612e45565b9150509250929050565b600080604083850312156132ca57600080fd5b60006132d885828601612d88565b92505060206132e985828601613193565b9150509250929050565b60006020828403121561330557600080fd5b600061331384828501612e06565b91505092915050565b60006020828403121561332e57600080fd5b600061333c84828501612e1b565b91505092915050565b6000806040838503121561335857600080fd5b600061336685828601612e1b565b925050602061337785828601613169565b9150509250929050565b60006020828403121561339357600080fd5b600082013567ffffffffffffffff8111156133ad57600080fd5b6133b984828501612e45565b91505092915050565b600080604083850312156133d557600080fd5b600083013567ffffffffffffffff8111156133ef57600080fd5b6133fb85828601612e45565b925050602083013567ffffffffffffffff81111561341857600080fd5b61342485828601612e45565b9150509250929050565b6000806020838503121561344157600080fd5b600083013567ffffffffffffffff81111561345b57600080fd5b61346785828601612e99565b92509250509250929050565b600060e0828403121561348557600080fd5b600061349384828501612f81565b91505092915050565b6000806000606084860312156134b157600080fd5b600084015167ffffffffffffffff8111156134cb57600080fd5b6134d786828701613031565b93505060206134e886828701612e06565b925050604084015167ffffffffffffffff81111561350557600080fd5b61351186828701612ee3565b9150509250925092565b60006020828403121561352d57600080fd5b600061353b8482850161317e565b91505092915050565b60006020828403121561355657600080fd5b600061356484828501613193565b91505092915050565b60006020828403121561357f57600080fd5b600061358d848285016131a8565b91505092915050565b6000602082840312156135a857600080fd5b60006135b6848285016131d2565b91505092915050565b600080600080600080600060e0888a0312156135da57600080fd5b60006135e88a828b016131e7565b97505060206135f98a828b01612d88565b965050604061360a8a828b01612d88565b955050606088013567ffffffffffffffff81111561362757600080fd5b6136338a828b01612db2565b94505060806136448a828b01612d88565b93505060a06136558a828b01612d88565b92505060c06136668a828b01612e1b565b91505092959891949750929550565b61367e816143ff565b82525050565b61368d81614411565b82525050565b61369c8161441d565b82525050565b6136ab8161441d565b82525050565b6136c26136bd8261441d565b61455b565b82525050565b60006136d38261435b565b6136dd8185614371565b93506136ed8185602086016144cd565b6136f681614603565b840191505092915050565b600061370c8261435b565b6137168185614382565b93506137268185602086016144cd565b80840191505092915050565b61373b816144ac565b82525050565b600061374d838561439e565b935061375a8385846144be565b82840190509392505050565b600061377182614366565b61377b818561438d565b935061378b8185602086016144cd565b61379481614603565b840191505092915050565b60006137ac601e8361438d565b91506137b78261463b565b602082019050919050565b60006137cf60208361438d565b91506137da82614664565b602082019050919050565b60006137f2602f8361438d565b91506137fd8261468d565b604082019050919050565b600061381560268361438d565b9150613820826146dc565b604082019050919050565b600061383860238361438d565b91506138438261472b565b604082019050919050565b600061385b602c8361438d565b91506138668261477a565b604082019050919050565b600061387e60148361438d565b9150613889826147c9565b602082019050919050565b60006138a1602c8361438d565b91506138ac826147f2565b604082019050919050565b60006138c460148361438d565b91506138cf82614841565b602082019050919050565b60006138e760268361438d565b91506138f28261486a565b604082019050919050565b600061390a601f8361438d565b9150613915826148b9565b602082019050919050565b600061392d60308361438d565b9150613938826148e2565b604082019050919050565b6000613950602e8361438d565b915061395b82614931565b604082019050919050565b600061397360158361438d565b915061397e82614980565b602082019050919050565b6000613996602d8361438d565b91506139a1826149a9565b604082019050919050565b60006139b960208361438d565b91506139c4826149f8565b602082019050919050565b60006139dc60118361438d565b91506139e782614a21565b602082019050919050565b60006139ff60118361438d565b9150613a0a82614a4a565b602082019050919050565b6000613a22601c8361438d565b9150613a2d82614a73565b602082019050919050565b6000613a4560268361438d565b9150613a5082614a9c565b604082019050919050565b6000613a68601d8361438d565b9150613a7382614aeb565b602082019050919050565b6000613a8b602e8361438d565b9150613a9682614b14565b604082019050919050565b6000613aae602b8361438d565b9150613ab982614b63565b604082019050919050565b6000613ad1601f8361438d565b9150613adc82614bb2565b602082019050919050565b6000613af4602a8361438d565b9150613aff82614bdb565b604082019050919050565b608082016000820151613b206000850182613b76565b506020820151613b336020850182613693565b506040820151613b466040850182613bc9565b506060820151613b596060850182613bc9565b50505050565b613b70613b6b82614427565b614565565b82525050565b613b7f81614443565b82525050565b613b8e81614443565b82525050565b613b9d81614471565b82525050565b613bb4613baf82614471565b614577565b82525050565b613bc38161447b565b82525050565b613bd28161448b565b82525050565b613be9613be48261448b565b614581565b82525050565b613bf88161449f565b82525050565b613c0f613c0a8261449f565b614593565b82525050565b6000613c218284613701565b915081905092915050565b6000613c388285613bfe565b600182019150613c4882846136b1565b6020820191508190509392505050565b6000613c648287613bfe565b600182019150613c7482866136b1565b602082019150613c8482856136b1565b602082019150613c948284613b5f565b60108201915081905095945050505050565b6000613cb28287613bfe565b600182019150613cc282866136b1565b602082019150613cd3828486613741565b915081905095945050505050565b6000613ced8286613bfe565b600182019150613cfd82856136b1565b602082019150613d0d8284613ba3565b602082019150819050949350505050565b6000613d2a8286613bfe565b600182019150613d3a82856136b1565b602082019150613d4a8284613bd8565b600882019150819050949350505050565b6000602082019050613d706000830184613675565b92915050565b6000604082019050613d8b6000830185613675565b613d986020830184613675565b9392505050565b6000606082019050613db46000830186613675565b613dc16020830185613675565b613dce6040830184613b94565b949350505050565b6000604082019050613deb6000830185613675565b613df86020830184613b94565b9392505050565b600060c082019050613e146000830189613675565b613e216020830188613b94565b613e2e6040830187613b85565b613e3b60608301866136a2565b613e486080830185613732565b613e5560a0830184613bba565b979650505050505050565b6000602082019050613e756000830184613684565b92915050565b6000602082019050613e9060008301846136a2565b92915050565b60006020820190508181036000830152613eb081846136c8565b905092915050565b60006020820190508181036000830152613ed28184613766565b905092915050565b60006020820190508181036000830152613ef38161379f565b9050919050565b60006020820190508181036000830152613f13816137c2565b9050919050565b60006020820190508181036000830152613f33816137e5565b9050919050565b60006020820190508181036000830152613f5381613808565b9050919050565b60006020820190508181036000830152613f738161382b565b9050919050565b60006020820190508181036000830152613f938161384e565b9050919050565b60006020820190508181036000830152613fb381613871565b9050919050565b60006020820190508181036000830152613fd381613894565b9050919050565b60006020820190508181036000830152613ff3816138b7565b9050919050565b60006020820190508181036000830152614013816138da565b9050919050565b60006020820190508181036000830152614033816138fd565b9050919050565b6000602082019050818103600083015261405381613920565b9050919050565b6000602082019050818103600083015261407381613943565b9050919050565b6000602082019050818103600083015261409381613966565b9050919050565b600060208201905081810360008301526140b381613989565b9050919050565b600060208201905081810360008301526140d3816139ac565b9050919050565b600060208201905081810360008301526140f3816139cf565b9050919050565b60006020820190508181036000830152614113816139f2565b9050919050565b6000602082019050818103600083015261413381613a15565b9050919050565b6000602082019050818103600083015261415381613a38565b9050919050565b6000602082019050818103600083015261417381613a5b565b9050919050565b6000602082019050818103600083015261419381613a7e565b9050919050565b600060208201905081810360008301526141b381613aa1565b9050919050565b600060208201905081810360008301526141d381613ac4565b9050919050565b600060208201905081810360008301526141f381613ae7565b9050919050565b600060808201905061420f6000830184613b0a565b92915050565b600060408201905061422a6000830185613b85565b61423760208301846136a2565b9392505050565b60006060820190506142536000830186613bba565b818103602083015261426581856136c8565b90506142746040830184613bef565b949350505050565b6000614286614297565b90506142928282614500565b919050565b6000604051905090565b600067ffffffffffffffff8211156142bc576142bb6145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156142e8576142e76145d4565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614314576143136145d4565b5b61431d82614603565b9050602081019050919050565b600067ffffffffffffffff821115614345576143446145d4565b5b61434e82614603565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006143b482614471565b91506143bf83614471565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143f4576143f36145a5565b5b828201905092915050565b600061440a82614451565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b60006144b782614471565b9050919050565b82818337600083830152505050565b60005b838110156144eb5780820151818401526020810190506144d0565b838111156144fa576000848401525b50505050565b61450982614603565b810181811067ffffffffffffffff82111715614528576145276145d4565b5b80604052505050565b600061453c8261449f565b915060ff8214156145505761454f6145a5565b5b600182019050919050565b6000819050919050565b600061457082614614565b9050919050565b6000819050919050565b600061458c82614621565b9050919050565b600061459e8261462e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6e6f742077686974656c697374656420616e63686f7220737461626c6520746f60008201527f6b656e0000000000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f6e6f742077686974656c697374656420737461626c6520746f6b656e00000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614c33816143ff565b8114614c3e57600080fd5b50565b614c4a81614411565b8114614c5557600080fd5b50565b614c618161441d565b8114614c6c57600080fd5b50565b614c7881614427565b8114614c8357600080fd5b50565b614c8f81614443565b8114614c9a57600080fd5b50565b614ca681614471565b8114614cb157600080fd5b50565b614cbd8161447b565b8114614cc857600080fd5b50565b614cd48161448b565b8114614cdf57600080fd5b50565b614ceb8161449f565b8114614cf657600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220de92904b2b70cb5afd9c52df4c9a2ebb40f18b7ab0c252007e06357a6207039d64736f6c63430008040033";
const _bytecode = "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b81525034801561004657600080fd5b5060805160601c614cbe61007a60003960008181610d8901528181610e180152818161112e01526111bd0152614cbe6000f3fe60806040526004361061012a5760003560e01c80638cf98e85116100ab578063b0ec62081161006f578063b0ec62081461038f578063c785c756146103b8578063e8023895146103f5578063e83265731461041e578063ea30d8f51461045b578063f2fde38b146104985761012a565b80638cf98e85146102985780638da5cb5b146102d55780639cd164cd14610300578063afa7355614610329578063b032c6d1146103525761012a565b806349b95551116100f257806349b95551146101ea5780634f1ef286146102135780635a5e469d1461022f5780636133f98514610258578063715018a6146102815761012a565b806330fc143b1461012f5780633659cfe6146101585780633676206714610181578063372500ab146101aa57806347a7d107146101c1575b600080fd5b34801561013b57600080fd5b506101566004803603810190610151919061328b565b6104c1565b005b34801561016457600080fd5b5061017f600480360381019061017a919061303c565b610d87565b005b34801561018d57600080fd5b506101a860048036038101906101a39190613131565b610f36565b005b3480156101b657600080fd5b506101bf610f49565b005b3480156101cd57600080fd5b506101e860048036038101906101e39190613131565b61102e565b005b3480156101f657600080fd5b50610211600480360381019061020c91906132f7565b611041565b005b61022d600480360381019061022891906130dd565b61112c565b005b34801561023b57600080fd5b506102566004803603810190610251919061316d565b611269565b005b34801561026457600080fd5b5061027f600480360381019061027a919061308e565b61129d565b005b34801561028d57600080fd5b5061029661145f565b005b3480156102a457600080fd5b506102bf60048036038101906102ba919061303c565b6114e7565b6040516102cc9190613c7e565b60405180910390f35b3480156102e157600080fd5b506102ea611507565b6040516102f79190613b79565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613131565b611531565b005b34801561033557600080fd5b50610350600480360381019061034b919061320e565b611544565b005b34801561035e57600080fd5b506103796004803603810190610374919061303c565b61162f565b6040516103869190613c7e565b60405180910390f35b34801561039b57600080fd5b506103b660048036038101906103b19190613131565b61164f565b005b3480156103c457600080fd5b506103df60048036038101906103da919061303c565b611662565b6040516103ec9190613c7e565b60405180910390f35b34801561040157600080fd5b5061041c6004803603810190610417919061340d565b611682565b005b34801561042a57600080fd5b50610445600480360381019061044091906131e5565b61176a565b6040516104529190613c7e565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061324a565b61178a565b60405161048f9190613fd8565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba919061303c565b6118bf565b005b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde886040518263ffffffff1660e01b815260040161054d9190613cb4565b60006040518083038186803b15801561056557600080fd5b505afa158015610579573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105a29190613365565b9250925092508181906105eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e29190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff161461063b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063290613d18565b60405180910390fd5b60cb54836080015114610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90613f58565b60405180910390fd5b60cf6000846101400151815260200190815260200160002060009054906101000a900460ff16156106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090613f98565b60405180910390fd5b600160cf6000856101400151815260200190815260200160002060006101000a81548160ff02191690831515021790555060006107298460e0015161178a565b905060008060008773ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde8b6040518263ffffffff1660e01b81526004016107699190613cb4565b60006040518083038186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107be9190613365565b925092509250818190610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe9190613cd6565b60405180910390fd5b50600361ffff16836060015161ffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613ef8565b60405180910390fd5b836040015167ffffffffffffffff168360a0015167ffffffffffffffff16146108b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ac90613ed8565b60405180910390fd5b60008973ffffffffffffffffffffffffffffffffffffffff16632b5113758560e001516040518263ffffffff1660e01b81526004016108f49190613cb4565b60e06040518083038186803b15801561090c57600080fd5b505afa158015610920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610944919061333c565b905061094f306119b7565b816080015114610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90613e18565b60405180910390fd5b846000015161ffff168160a0015161ffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613cf8565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff1663aa4efa5b8561014001516040518263ffffffff1660e01b8152600401610a249190613c99565b60206040518083038186803b158015610a3c57600080fd5b505afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7491906131bc565b610ae4578973ffffffffffffffffffffffffffffffffffffffff1663c68785198c6040518263ffffffff1660e01b8152600401610ab19190613cb4565b600060405180830381600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050505b6000808b73ffffffffffffffffffffffffffffffffffffffff16639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2d57600080fd5b505afa158015610b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6591906133e4565b61ffff16836060015161ffff161415610cc857826040015160001c915060008273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f313ce567000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610c2b9190613a0b565b600060405180830381855afa9150503d8060008114610c66576040519150601f19603f3d011682016040523d82523d6000602084013e610c6b565b606091505b50915050600081806020019051810190610c859190613488565b90508460200151925060088160ff161115610cc157600881610ca7919061437c565b600a610cb39190614204565b83610cbe9190614322565b92505b5050610d65565b8b73ffffffffffffffffffffffffffffffffffffffff16631ff1e286846060015185604001516040518363ffffffff1660e01b8152600401610d0b929190613ff3565b60206040518083038186803b158015610d2357600080fd5b505afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190613065565b9150826020015190505b610d7782886020015160001c836119da565b5050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610e55611a60565b73ffffffffffffffffffffffffffffffffffffffff1614610eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea290613db8565b60405180910390fd5b610eb481611ab7565b610f3381600067ffffffffffffffff811115610ef9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610f2b5781602001600182028036833780820191505090505b506000611b36565b50565b610f45828260c0600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600217610f99336119b7565b604051602001610faa929190613a3d565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401610fd99392919061401c565b602060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102b919061345f565b50565b61103d82826080600117611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600317611091336119b7565b86866040516020016110a69493929190613b01565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016110d59392919061401c565b602060405180830381600087803b1580156110ef57600080fd5b505af1158015611103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611127919061345f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613d78565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111fa611a60565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613db8565b60405180910390fd5b61125982611ab7565b61126582826001611b36565b5050565b61129883838360405160200161127f9190613a22565b60405160208183030381529060405260c0600217611d27565b505050565b600060019054906101000a900460ff166112c55760008054906101000a900460ff16156112ce565b6112cd611f0c565b5b61130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613e58565b60405180910390fd5b60008060019054906101000a900460ff16159050801561135d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61137e604051806060016040528060268152602001614c6360269139611f1d565b611386611fb6565b61138e612017565b8360c960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160cb81905550611438604051806060016040528060268152602001614c1660269139611f1d565b80156114595760008060016101000a81548160ff0219169083151502179055505b50505050565b611467612078565b73ffffffffffffffffffffffffffffffffffffffff16611485611507565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613eb8565b60405180910390fd5b6114e56000612080565b565b60ce6020528060005260406000206000915054906101000a900460ff1681565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61154082826080600017611d07565b5050565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f46040600017611594336119b7565b86866040516020016115a99493929190613a69565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016115d89392919061401c565b602060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162a919061345f565b505050565b60cc6020528060005260406000206000915054906101000a900460ff1681565b61165e828260c0600117611d07565b5050565b60cd6020528060005260406000206000915054906101000a900460ff1681565b60c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f460406001176116d2336119b7565b856040516020016116e593929190613b3c565b604051602081830303815290604052600f6040518463ffffffff1660e01b81526004016117149392919061401c565b602060405180830381600087803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611766919061345f565b5050565b60cf6020528060005260406000206000915054906101000a900460ff1681565b611792612a89565b60006117a7818461214690919063ffffffff16565b826000019061ffff16908161ffff16815250506002816117c7919061415b565b90506117dc81846121ad90919063ffffffff16565b8260200181815250506020816117f2919061415b565b9050611807818461221490919063ffffffff16565b826040019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611833919061415b565b9050611848818461221490919063ffffffff16565b826060019067ffffffffffffffff16908167ffffffffffffffff1681525050600881611874919061415b565b9050808351146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090613e38565b60405180910390fd5b50919050565b6118c7612078565b73ffffffffffffffffffffffffffffffffffffffff166118e5611507565b73ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613eb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613d58565b60405180910390fd5b6119b481612080565b50565b60008173ffffffffffffffffffffffffffffffffffffffff1660001b9050919050565b611a5b8363a9059cbb60e01b84846040516024016119f9929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b505050565b6000611a8e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611abf612078565b73ffffffffffffffffffffffffffffffffffffffff16611add611507565b73ffffffffffffffffffffffffffffffffffffffff1614611b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2a90613eb8565b60405180910390fd5b50565b6000611b40611a60565b9050611b4b8461234c565b600083511180611b585750815b15611b6957611b678484612405565b505b6000611b977f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6124e9565b90508060000160009054906101000a900460ff16611d005760018160000160006101000a81548160ff021916908315150217905550611c638583604051602401611be19190613b79565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612405565b5060008160000160006101000a81548160ff021916908315150217905550611c89611a60565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90613d38565b60405180910390fd5b611cff856124f3565b5b5050505050565b611d2283836040518060200160405280600081525084611d27565b505050565b611d3384333086612542565b611d608460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856125cb565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630f5287b08686600360cb54600062f3b3316040518763ffffffff1660e01b8152600401611dce96959493929190613c1d565b602060405180830381600087803b158015611de857600080fd5b505af1158015611dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e20919061345f565b905060c960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b19a437e621435f484611e6e336119b7565b8786604051602001611e839493929190613ab7565b604051602081830303815290604052600f6040518463ffffffff1660e01b8152600401611eb29392919061401c565b602060405180830381600087803b158015611ecc57600080fd5b505af1158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f04919061345f565b505050505050565b6000611f17306126ec565b15905090565b611fb381604051602401611f319190613cd6565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126ff565b50565b600060019054906101000a900460ff16612005576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffc90613f78565b60405180910390fd5b61200d612728565b612015612779565b565b600060019054906101000a900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d90613f78565b60405180910390fd5b61206e6127da565b61207661282b565b565b600033905090565b6000609760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081609760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600282612155919061415b565b83511015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613d98565b60405180910390fd5b60008260028501015190508091505092915050565b60006020826121bc919061415b565b835110156121ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f690613e78565b60405180910390fd5b60008260208501015190508091505092915050565b6000600882612223919061415b565b83511015612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90613dd8565b60405180910390fd5b60008260088501015190508091505092915050565b60006122dd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661287c9092919063ffffffff16565b905060008151111561233d57808060200190518101906122fd91906131bc565b61233c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233390613fb8565b60405180910390fd5b5b505050565b6000819050919050565b612355816126ec565b612394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238b90613e98565b60405180910390fd5b806123c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612342565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060612410836126ec565b61244f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244690613f18565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516124779190613a0b565b600060405180830381855af49150503d80600081146124b2576040519150601f19603f3d011682016040523d82523d6000602084013e6124b7565b606091505b50915091506124df8282604051806060016040528060278152602001614c3c60279139612894565b9250505092915050565b6000819050919050565b6124fc8161234c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6125c5846323b872dd60e01b85858560405160240161256393929190613bbd565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b6000818473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401612609929190613b94565b60206040518083038186803b15801561262157600080fd5b505afa158015612635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126599190613436565b612663919061415b565b90506126e68463095ea7b360e01b8584604051602401612684929190613bf4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061227b565b50505050565b600080823b905060008111915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b600060019054906101000a900460ff16612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e90613f78565b60405180910390fd5b565b600060019054906101000a900460ff166127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613f78565b60405180910390fd5b6127d86127d3612078565b612080565b565b600060019054906101000a900460ff16612829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282090613f78565b60405180910390fd5b565b600060019054906101000a900460ff1661287a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287190613f78565b60405180910390fd5b565b606061288b84846000856128fb565b90509392505050565b606083156128a4578290506128f4565b6000835111156128b75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb9190613cd6565b60405180910390fd5b9392505050565b606082471015612940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293790613df8565b60405180910390fd5b61294985612a0f565b612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90613f38565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129b19190613a0b565b60006040518083038185875af1925050503d80600081146129ee576040519150601f19603f3d011682016040523d82523d6000602084013e6129f3565b606091505b5091509150612a03828286612a22565b92505050949350505050565b600080823b905060008111915050919050565b60608315612a3257829050612a82565b600083511115612a455782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a799190613cd6565b60405180910390fd5b9392505050565b6040518060800160405280600061ffff16815260200160008019168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000612adf612ada8461407f565b61405a565b90508083825260208201905082856080860282011115612afe57600080fd5b60005b85811015612b2e5781612b148882612d4d565b845260208401935060808301925050600181019050612b01565b5050509392505050565b6000612b4b612b46846140ab565b61405a565b905082815260208101848484011115612b6357600080fd5b612b6e84828561446f565b509392505050565b6000612b89612b84846140ab565b61405a565b905082815260208101848484011115612ba157600080fd5b612bac84828561447e565b509392505050565b6000612bc7612bc2846140dc565b61405a565b905082815260208101848484011115612bdf57600080fd5b612bea84828561447e565b509392505050565b600081359050612c0181614b46565b92915050565b600081519050612c1681614b46565b92915050565b600082601f830112612c2d57600080fd5b8151612c3d848260208601612acc565b91505092915050565b600081519050612c5581614b5d565b92915050565b600081359050612c6a81614b74565b92915050565b600081519050612c7f81614b74565b92915050565b600082601f830112612c9657600080fd5b8135612ca6848260208601612b38565b91505092915050565b600082601f830112612cc057600080fd5b8151612cd0848260208601612b76565b91505092915050565b60008083601f840112612ceb57600080fd5b8235905067ffffffffffffffff811115612d0457600080fd5b602083019150836001820283011115612d1c57600080fd5b9250929050565b600082601f830112612d3457600080fd5b8151612d44848260208601612bb4565b91505092915050565b600060808284031215612d5f57600080fd5b612d69608061405a565b90506000612d7984828501612c70565b6000830152506020612d8d84828501612c70565b6020830152506040612da184828501613027565b6040830152506060612db584828501613027565b60608301525092915050565b600060e08284031215612dd357600080fd5b612ddd60e061405a565b90506000612ded84828501613027565b6000830152506020612e0184828501612fe8565b6020830152506040612e1584828501612c70565b6040830152506060612e2984828501612fbe565b6060830152506080612e3d84828501612c70565b60808301525060a0612e5184828501612fbe565b60a08301525060c0612e6584828501612fe8565b60c08301525092915050565b60006101608284031215612e8457600080fd5b612e8f61016061405a565b90506000612e9f84828501613027565b6000830152506020612eb384828501612ffd565b6020830152506040612ec784828501612ffd565b6040830152506060612edb84828501612fbe565b6060830152506080612eef84828501612c70565b60808301525060a0612f0384828501613012565b60a08301525060c0612f1784828501613027565b60c08301525060e082015167ffffffffffffffff811115612f3757600080fd5b612f4384828501612caf565b60e083015250610100612f5884828501612ffd565b6101008301525061012082015167ffffffffffffffff811115612f7a57600080fd5b612f8684828501612c1c565b61012083015250610140612f9c84828501612c70565b6101408301525092915050565b600081359050612fb881614b8b565b92915050565b600081519050612fcd81614ba2565b92915050565b600081359050612fe281614bb9565b92915050565b600081519050612ff781614bb9565b92915050565b60008151905061300c81614bd0565b92915050565b60008151905061302181614be7565b92915050565b60008151905061303681614bfe565b92915050565b60006020828403121561304e57600080fd5b600061305c84828501612bf2565b91505092915050565b60006020828403121561307757600080fd5b600061308584828501612c07565b91505092915050565b6000806000606084860312156130a357600080fd5b60006130b186828701612bf2565b93505060206130c286828701612bf2565b92505060406130d386828701612c5b565b9150509250925092565b600080604083850312156130f057600080fd5b60006130fe85828601612bf2565b925050602083013567ffffffffffffffff81111561311b57600080fd5b61312785828601612c85565b9150509250929050565b6000806040838503121561314457600080fd5b600061315285828601612bf2565b925050602061316385828601612fd3565b9150509250929050565b60008060006060848603121561318257600080fd5b600061319086828701612bf2565b93505060206131a186828701612fd3565b92505060406131b286828701612fd3565b9150509250925092565b6000602082840312156131ce57600080fd5b60006131dc84828501612c46565b91505092915050565b6000602082840312156131f757600080fd5b600061320584828501612c5b565b91505092915050565b6000806040838503121561322157600080fd5b600061322f85828601612c5b565b925050602061324085828601612fa9565b9150509250929050565b60006020828403121561325c57600080fd5b600082013567ffffffffffffffff81111561327657600080fd5b61328284828501612c85565b91505092915050565b6000806040838503121561329e57600080fd5b600083013567ffffffffffffffff8111156132b857600080fd5b6132c485828601612c85565b925050602083013567ffffffffffffffff8111156132e157600080fd5b6132ed85828601612c85565b9150509250929050565b6000806020838503121561330a57600080fd5b600083013567ffffffffffffffff81111561332457600080fd5b61333085828601612cd9565b92509250509250929050565b600060e0828403121561334e57600080fd5b600061335c84828501612dc1565b91505092915050565b60008060006060848603121561337a57600080fd5b600084015167ffffffffffffffff81111561339457600080fd5b6133a086828701612e71565b93505060206133b186828701612c46565b925050604084015167ffffffffffffffff8111156133ce57600080fd5b6133da86828701612d23565b9150509250925092565b6000602082840312156133f657600080fd5b600061340484828501612fbe565b91505092915050565b60006020828403121561341f57600080fd5b600061342d84828501612fd3565b91505092915050565b60006020828403121561344857600080fd5b600061345684828501612fe8565b91505092915050565b60006020828403121561347157600080fd5b600061347f84828501613012565b91505092915050565b60006020828403121561349a57600080fd5b60006134a884828501613027565b91505092915050565b6134ba816143b0565b82525050565b6134c9816143c2565b82525050565b6134d8816143ce565b82525050565b6134e7816143ce565b82525050565b6134fe6134f9826143ce565b6144e2565b82525050565b600061350f8261410d565b6135198185614123565b935061352981856020860161447e565b6135328161458a565b840191505092915050565b60006135488261410d565b6135528185614134565b935061356281856020860161447e565b80840191505092915050565b6135778161445d565b82525050565b60006135898385614150565b935061359683858461446f565b82840190509392505050565b60006135ad82614118565b6135b7818561413f565b93506135c781856020860161447e565b6135d08161458a565b840191505092915050565b60006135e8601e8361413f565b91506135f3826145cf565b602082019050919050565b600061360b60208361413f565b9150613616826145f8565b602082019050919050565b600061362e602f8361413f565b915061363982614621565b604082019050919050565b600061365160268361413f565b915061365c82614670565b604082019050919050565b6000613674602c8361413f565b915061367f826146bf565b604082019050919050565b600061369760148361413f565b91506136a28261470e565b602082019050919050565b60006136ba602c8361413f565b91506136c582614737565b604082019050919050565b60006136dd60148361413f565b91506136e882614786565b602082019050919050565b600061370060268361413f565b915061370b826147af565b604082019050919050565b6000613723601f8361413f565b915061372e826147fe565b602082019050919050565b600061374660308361413f565b915061375182614827565b604082019050919050565b6000613769602e8361413f565b915061377482614876565b604082019050919050565b600061378c60158361413f565b9150613797826148c5565b602082019050919050565b60006137af602d8361413f565b91506137ba826148ee565b604082019050919050565b60006137d260208361413f565b91506137dd8261493d565b602082019050919050565b60006137f560118361413f565b915061380082614966565b602082019050919050565b600061381860118361413f565b91506138238261498f565b602082019050919050565b600061383b60268361413f565b9150613846826149b8565b604082019050919050565b600061385e601d8361413f565b915061386982614a07565b602082019050919050565b6000613881602e8361413f565b915061388c82614a30565b604082019050919050565b60006138a4602b8361413f565b91506138af82614a7f565b604082019050919050565b60006138c7601f8361413f565b91506138d282614ace565b602082019050919050565b60006138ea602a8361413f565b91506138f582614af7565b604082019050919050565b608082016000820151613916600085018261396c565b50602082015161392960208501826134cf565b50604082015161393c60408501826139bf565b50606082015161394f60608501826139bf565b50505050565b613966613961826143d8565b6144ec565b82525050565b613975816143f4565b82525050565b613984816143f4565b82525050565b61399381614422565b82525050565b6139aa6139a582614422565b6144fe565b82525050565b6139b98161442c565b82525050565b6139c88161443c565b82525050565b6139df6139da8261443c565b614508565b82525050565b6139ee81614450565b82525050565b613a05613a0082614450565b61451a565b82525050565b6000613a17828461353d565b915081905092915050565b6000613a2e8284613999565b60208201915081905092915050565b6000613a4982856139f4565b600182019150613a5982846134ed565b6020820191508190509392505050565b6000613a7582876139f4565b600182019150613a8582866134ed565b602082019150613a9582856134ed565b602082019150613aa58284613955565b60108201915081905095945050505050565b6000613ac382876139f4565b600182019150613ad382866134ed565b602082019150613ae3828561353d565b9150613aef82846139ce565b60088201915081905095945050505050565b6000613b0d82876139f4565b600182019150613b1d82866134ed565b602082019150613b2e82848661357d565b915081905095945050505050565b6000613b4882866139f4565b600182019150613b5882856134ed565b602082019150613b688284613999565b602082019150819050949350505050565b6000602082019050613b8e60008301846134b1565b92915050565b6000604082019050613ba960008301856134b1565b613bb660208301846134b1565b9392505050565b6000606082019050613bd260008301866134b1565b613bdf60208301856134b1565b613bec604083018461398a565b949350505050565b6000604082019050613c0960008301856134b1565b613c16602083018461398a565b9392505050565b600060c082019050613c3260008301896134b1565b613c3f602083018861398a565b613c4c604083018761397b565b613c5960608301866134de565b613c66608083018561356e565b613c7360a08301846139b0565b979650505050505050565b6000602082019050613c9360008301846134c0565b92915050565b6000602082019050613cae60008301846134de565b92915050565b60006020820190508181036000830152613cce8184613504565b905092915050565b60006020820190508181036000830152613cf081846135a2565b905092915050565b60006020820190508181036000830152613d11816135db565b9050919050565b60006020820190508181036000830152613d31816135fe565b9050919050565b60006020820190508181036000830152613d5181613621565b9050919050565b60006020820190508181036000830152613d7181613644565b9050919050565b60006020820190508181036000830152613d9181613667565b9050919050565b60006020820190508181036000830152613db18161368a565b9050919050565b60006020820190508181036000830152613dd1816136ad565b9050919050565b60006020820190508181036000830152613df1816136d0565b9050919050565b60006020820190508181036000830152613e11816136f3565b9050919050565b60006020820190508181036000830152613e3181613716565b9050919050565b60006020820190508181036000830152613e5181613739565b9050919050565b60006020820190508181036000830152613e718161375c565b9050919050565b60006020820190508181036000830152613e918161377f565b9050919050565b60006020820190508181036000830152613eb1816137a2565b9050919050565b60006020820190508181036000830152613ed1816137c5565b9050919050565b60006020820190508181036000830152613ef1816137e8565b9050919050565b60006020820190508181036000830152613f118161380b565b9050919050565b60006020820190508181036000830152613f318161382e565b9050919050565b60006020820190508181036000830152613f5181613851565b9050919050565b60006020820190508181036000830152613f7181613874565b9050919050565b60006020820190508181036000830152613f9181613897565b9050919050565b60006020820190508181036000830152613fb1816138ba565b9050919050565b60006020820190508181036000830152613fd1816138dd565b9050919050565b6000608082019050613fed6000830184613900565b92915050565b6000604082019050614008600083018561397b565b61401560208301846134de565b9392505050565b600060608201905061403160008301866139b0565b81810360208301526140438185613504565b905061405260408301846139e5565b949350505050565b6000614064614075565b905061407082826144b1565b919050565b6000604051905090565b600067ffffffffffffffff82111561409a5761409961455b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140c6576140c561455b565b5b6140cf8261458a565b9050602081019050919050565b600067ffffffffffffffff8211156140f7576140f661455b565b5b6141008261458a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061416682614422565b915061417183614422565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156141a6576141a561452c565b5b828201905092915050565b6000808291508390505b60018511156141fb578086048111156141d7576141d661452c565b5b60018516156141e65780820291505b80810290506141f4856145c2565b94506141bb565b94509492505050565b600061420f82614422565b915061421a83614450565b92506142477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461424f565b905092915050565b60008261425f576001905061431b565b8161426d576000905061431b565b8160018114614283576002811461428d576142bc565b600191505061431b565b60ff84111561429f5761429e61452c565b5b8360020a9150848211156142b6576142b561452c565b5b5061431b565b5060208310610133831016604e8410600b84101617156142f15782820a9050838111156142ec576142eb61452c565b5b61431b565b6142fe84848460016141b1565b925090508184048111156143155761431461452c565b5b81810290505b9392505050565b600061432d82614422565b915061433883614422565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143715761437061452c565b5b828202905092915050565b600061438782614450565b915061439283614450565b9250828210156143a5576143a461452c565b5b828203905092915050565b60006143bb82614402565b9050919050565b60008115159050919050565b6000819050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b600061446882614422565b9050919050565b82818337600083830152505050565b60005b8381101561449c578082015181840152602081019050614481565b838111156144ab576000848401525b50505050565b6144ba8261458a565b810181811067ffffffffffffffff821117156144d9576144d861455b565b5b80604052505050565b6000819050919050565b60006144f78261459b565b9050919050565b6000819050919050565b6000614513826145a8565b9050919050565b6000614525826145b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160801b9050919050565b60008160c01b9050919050565b60008160f81b9050919050565b60008160011c9050919050565b7f7472616e7366657220697320746f207468652077726f6e6720636861696e0000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d207465727261600082015250565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b7f746f55696e7436345f6f75744f66426f756e6473000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f7472616e73666572206973206e6f7420746f2074686973206164647265737300600082015250565b7f696e76616c696420496e636f6d696e67546f6b656e5472616e73666572496e6660008201527f6f20656e636f646564206c656e67746800000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f73657175656e6365206d69736d61746368000000000000000000000000000000600082015250565b7f636861696e206964206d69736d61746368000000000000000000000000000000600082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f6d65737361676520646f6573206e6f7420636f6d652066726f6d20746572726160008201527f20616e63686f7220627269646765000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b7f7472616e7366657220696e666f20616c72656164792070726f63657373656400600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b614b4f816143b0565b8114614b5a57600080fd5b50565b614b66816143c2565b8114614b7157600080fd5b50565b614b7d816143ce565b8114614b8857600080fd5b50565b614b94816143d8565b8114614b9f57600080fd5b50565b614bab816143f4565b8114614bb657600080fd5b50565b614bc281614422565b8114614bcd57600080fd5b50565b614bd98161442c565b8114614be457600080fd5b50565b614bf08161443c565b8114614bfb57600080fd5b50565b614c0781614450565b8114614c1257600080fd5b5056fe436f6d706c657465206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2e416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645374617274696e67206574682078616e63686f7220696e697469616c697a6174696f6e2e2e2ea2646970667358221220fb4b237924672737884526e92a0a134e8d91ee41928648e35332b574cafaad6364736f6c63430008040033";
const isSuperArgs = (xs) => xs.length > 1;

@@ -441,0 +444,0 @@ export class XAnchorBridge__factory extends ContractFactory {

@@ -31,3 +31,4 @@ import { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from "ethers";

"depositStable(address,uint256)": FunctionFragment;
"initialize(uint8,address,address,address[],address,address,bytes32)": FunctionFragment;
"initialize(address,address,bytes32)": FunctionFragment;
"lockAndBorrow(address,uint256,uint256)": FunctionFragment;
"lockCollateral(address,uint256)": FunctionFragment;

@@ -53,3 +54,4 @@ "owner()": FunctionFragment;

encodeFunctionData(functionFragment: "depositStable", values: [string, BigNumberish]): string;
encodeFunctionData(functionFragment: "initialize", values: [BigNumberish, string, string, string[], string, string, BytesLike]): string;
encodeFunctionData(functionFragment: "initialize", values: [string, string, BytesLike]): string;
encodeFunctionData(functionFragment: "lockAndBorrow", values: [string, BigNumberish, BigNumberish]): string;
encodeFunctionData(functionFragment: "lockCollateral", values: [string, BigNumberish]): string;

@@ -75,2 +77,3 @@ encodeFunctionData(functionFragment: "owner", values?: undefined): string;

decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "lockAndBorrow", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "lockCollateral", data: BytesLike): Result;

@@ -152,5 +155,8 @@ decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;

}): Promise<ContractTransaction>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -206,5 +212,8 @@ from?: string | Promise<string>;

}): Promise<ContractTransaction>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<ContractTransaction>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -250,3 +259,4 @@ from?: string | Promise<string>;

depositStable(token: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: CallOverrides): Promise<void>;
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: CallOverrides): Promise<void>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: CallOverrides): Promise<void>;
lockCollateral(token: string, amount: BigNumberish, overrides?: CallOverrides): Promise<void>;

@@ -289,5 +299,8 @@ owner(overrides?: CallOverrides): Promise<string>;

}): Promise<BigNumber>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<BigNumber>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<BigNumber>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -340,5 +353,8 @@ from?: string | Promise<string>;

}): Promise<PopulatedTransaction>;
initialize(_consistencyLevel: BigNumberish, _wust: string, _aust: string, _collateralTokens: string[], _wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
initialize(_wormholeCoreBridge: string, _wormholeTokenBridge: string, _terraAnchorBridgeAddress: BytesLike, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<PopulatedTransaction>;
lockAndBorrow(token: string, lockAmount: BigNumberish, borrowAmount: BigNumberish, overrides?: Overrides & {
from?: string | Promise<string>;
}): Promise<PopulatedTransaction>;
lockCollateral(token: string, amount: BigNumberish, overrides?: Overrides & {

@@ -345,0 +361,0 @@ from?: string | Promise<string>;

@@ -24,2 +24,3 @@ import { Network } from "../base/contracts";

withdrawAssets(tokenInput: AnyTokenInput, from: string, gasLimit: number, handleEvent?: CrossChainEventHandler<Tx>): Promise<TwoWayTxResponse<Tx>>;
lockAndBorrow(collateralInput: CollateralInput, lockAmount: string, borrowAmount: string, from: string, gasLimit: number, handleEvent?: CrossChainEventHandler<Tx>): Promise<TwoWayTxResponse<Tx>>;
terraAddress(remoteChainAddress: string): Promise<string>;

@@ -37,4 +38,5 @@ abstract sequences(tx: Tx): Sequences;

protected abstract _withdrawAssets(tokenInput: AnyTokenInput, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<Tx>): Promise<Tx>;
protected abstract _lockAndBorrow(collateralInput: CollateralInput, lockAmount: string, borrowAmount: string, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<Tx>): Promise<Tx>;
protected abstract _receipt(txHash: string): Promise<Tx>;
private queryTerraAddress;
}

@@ -47,2 +47,5 @@ import { contracts } from "../base/contracts";

}
async lockAndBorrow(collateralInput, lockAmount, borrowAmount, from, gasLimit, handleEvent = defaultEventHandler) {
return this.wormhole.bridge(() => this._lockAndBorrow(collateralInput, lockAmount, borrowAmount, from, gasLimit, handleEvent), handleEvent);
}
terraAddress(remoteChainAddress) {

@@ -49,0 +52,0 @@ return this.queryTerraAddress(remoteChainAddress);

@@ -25,2 +25,3 @@ import { CrossAnchorSdk, CrossChainEventHandler, Network, Sequences, Redemption, AnyTokenInput, CollateralInput } from "../base";

protected _withdrawAssets(tokenInput: AnyTokenInput, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<ContractReceipt>): Promise<ContractReceipt>;
protected _lockAndBorrow(collateralInput: CollateralInput, lockAmount: string, borrowAmount: string, from: string, gasLimit: number, handleEvent: CrossChainEventHandler<ContractReceipt>): Promise<ContractReceipt>;
protected _receipt(txHash: string): Promise<ContractReceipt>;

@@ -27,0 +28,0 @@ sequences(receipt: ContractReceipt): Sequences;

@@ -79,2 +79,5 @@ import { CrossAnchorSdk, CrossChainEventKind, contracts, collateralTerraEmitterAddress, tokenContract, } from "../base";

}
_lockAndBorrow(collateralInput, lockAmount, borrowAmount, from, gasLimit, handleEvent) {
return this.tx(() => this.crossAnchorBridgeContract.lockAndBorrow(tokenContract(this.chainId, this.network, collateralInput), lockAmount, borrowAmount, { from, gasLimit }), handleEvent);
}
async _receipt(txHash) {

@@ -81,0 +84,0 @@ const tx = await this.provider.getTransaction(txHash);

{
"name": "@anchor-protocol/crossanchor-sdk",
"version": "0.1.2-alpha.119",
"version": "0.1.2-alpha.120",
"license": "Apache-2.0",

@@ -5,0 +5,0 @@ "types": "./lib/esm/index.d.ts",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc