UNPKG

@river-build/generated

Version:

## How to generate contract types

1 lines 230 kB
{"abi":[{"type":"constructor","inputs":[{"name":"approvedOperators","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"__OperatorRegistry_init","inputs":[{"name":"initialOperators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"__RiverConfig_init","inputs":[{"name":"configManagers","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addStream","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"},{"name":"genesisMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"stream","type":"tuple","internalType":"struct Stream","components":[{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"reserved0","type":"uint64","internalType":"uint64"},{"name":"flags","type":"uint64","internalType":"uint64"},{"name":"nodes","type":"address[]","internalType":"address[]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allocateStream","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"},{"name":"nodes","type":"address[]","internalType":"address[]"},{"name":"genesisMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"genesisMiniblock","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveConfigurationManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configurationExists","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deleteConfiguration","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deleteConfigurationOnBlock","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllConfiguration","inputs":[],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Setting[]","components":[{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"value","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"getAllNodeAddresses","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getAllNodes","inputs":[],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Node[]","components":[{"name":"status","type":"uint8","internalType":"enum NodeStatus"},{"name":"url","type":"string","internalType":"string"},{"name":"nodeAddress","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getAllOperators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getConfiguration","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Setting[]","components":[{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"value","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"getNode","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Node","components":[{"name":"status","type":"uint8","internalType":"enum NodeStatus"},{"name":"url","type":"string","internalType":"string"},{"name":"nodeAddress","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"getNodeCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPaginatedStreams","inputs":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"stop","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct StreamWithId[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"stream","type":"tuple","internalType":"struct Stream","components":[{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"reserved0","type":"uint64","internalType":"uint64"},{"name":"flags","type":"uint64","internalType":"uint64"},{"name":"nodes","type":"address[]","internalType":"address[]"}]}]},{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getPaginatedStreamsOnNode","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"},{"name":"start","type":"uint256","internalType":"uint256"},{"name":"stop","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"streams","type":"tuple[]","internalType":"struct StreamWithId[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"stream","type":"tuple","internalType":"struct Stream","components":[{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"reserved0","type":"uint64","internalType":"uint64"},{"name":"flags","type":"uint64","internalType":"uint64"},{"name":"nodes","type":"address[]","internalType":"address[]"}]}]}],"stateMutability":"view"},{"type":"function","name":"getStream","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stream","type":"tuple","internalType":"struct Stream","components":[{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"reserved0","type":"uint64","internalType":"uint64"},{"name":"flags","type":"uint64","internalType":"uint64"},{"name":"nodes","type":"address[]","internalType":"address[]"}]}],"stateMutability":"view"},{"type":"function","name":"getStreamCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStreamCountOnNode","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStreamWithGenesis","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stream","type":"tuple","internalType":"struct Stream","components":[{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"reserved0","type":"uint64","internalType":"uint64"},{"name":"flags","type":"uint64","internalType":"uint64"},{"name":"nodes","type":"address[]","internalType":"address[]"}]},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"isConfigurationManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isNode","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isStream","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"placeStreamOnNode","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"},{"name":"nodeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerNode","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"},{"name":"url","type":"string","internalType":"string"},{"name":"status","type":"uint8","internalType":"enum NodeStatus"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeConfigurationManager","inputs":[{"name":"manager","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeNode","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeStreamFromNode","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"},{"name":"nodeAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setConfiguration","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"},{"name":"blockNumber","type":"uint64","internalType":"uint64"},{"name":"value","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStreamLastMiniblock","inputs":[{"name":"streamId","type":"bytes32","internalType":"bytes32"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"isSealed","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStreamLastMiniblockBatch","inputs":[{"name":"miniblocks","type":"tuple[]","internalType":"struct SetMiniblock[]","components":[{"name":"streamId","type":"bytes32","internalType":"bytes32"},{"name":"prevMiniBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"isSealed","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"syncNodesOnStreams","inputs":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"stop","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateNodeStatus","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"},{"name":"status","type":"uint8","internalType":"enum NodeStatus"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateNodeUrl","inputs":[{"name":"nodeAddress","type":"address","internalType":"address"},{"name":"url","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ConfigurationChanged","inputs":[{"name":"key","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"block","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"value","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"deleted","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ConfigurationManagerAdded","inputs":[{"name":"manager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ConfigurationManagerRemoved","inputs":[{"name":"manager","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint32","indexed":false,"internalType":"uint32"}],"anonymous":false},{"type":"event","name":"InterfaceAdded","inputs":[{"name":"interfaceId","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"InterfaceRemoved","inputs":[{"name":"interfaceId","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"NodeAdded","inputs":[{"name":"nodeAddress","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"url","type":"string","indexed":false,"internalType":"string"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum NodeStatus"}],"anonymous":false},{"type":"event","name":"NodeRemoved","inputs":[{"name":"nodeAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NodeStatusUpdated","inputs":[{"name":"nodeAddress","type":"address","indexed":true,"internalType":"address"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum NodeStatus"}],"anonymous":false},{"type":"event","name":"NodeUrlUpdated","inputs":[{"name":"nodeAddress","type":"address","indexed":true,"internalType":"address"},{"name":"url","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorAdded","inputs":[{"name":"operatorAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRemoved","inputs":[{"name":"operatorAddress","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StreamAllocated","inputs":[{"name":"streamId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"nodes","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"genesisMiniblockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"genesisMiniblock","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"StreamCreated","inputs":[{"name":"streamId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"genesisMiniblockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"stream","type":"tuple","indexed":false,"internalType":"struct Stream","components":[{"name":"lastMiniblockHash","type":"bytes32","internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","internalType":"uint64"},{"name":"reserved0","type":"uint64","internalType":"uint64"},{"name":"flags","type":"uint64","internalType":"uint64"},{"name":"nodes","type":"address[]","internalType":"address[]"}]}],"anonymous":false},{"type":"event","name":"StreamLastMiniblockUpdateFailed","inputs":[{"name":"streamId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"lastMiniblockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StreamLastMiniblockUpdated","inputs":[{"name":"streamId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"lastMiniblockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"lastMiniblockNum","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"isSealed","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"StreamPlacementUpdated","inputs":[{"name":"streamId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"nodeAddress","type":"address","indexed":false,"internalType":"address"},{"name":"isAdded","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"error","name":"Initializable_InInitializingState","inputs":[]},{"type":"error","name":"Initializable_NotInInitializingState","inputs":[]},{"type":"error","name":"Introspection_AlreadySupported","inputs":[]},{"type":"error","name":"Introspection_NotSupported","inputs":[]},{"type":"error","name":"Ownable__NotOwner","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"Ownable__ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b5060405162005028380380620050288339810160408190526200003491620004a6565b6200003e620000c1565b620000493362000169565b60005b8151811015620000b957620000838282815181106200006f576200006f62000578565b60200260200101516200023760201b60201c565b620000b08282815181106200009c576200009c62000578565b60200260200101516200031c60201b60201c565b6001016200004c565b5050620005df565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef520008054640100000000900460ff16156200010e576040516366008a2d60e01b815260040160405180910390fd5b805463ffffffff90811610156200016657805463ffffffff191663ffffffff90811782556040519081527fe9c9b456cb2994b80aeef036cf59d26e9617df80f816a6ee5a5b4166e07e2f5c9060200160405180910390a15b50565b60006200019d7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae300546001600160a01b031690565b90506001600160a01b038216620001c757604051634e3ef82560e01b815260040160405180910390fd5b817f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae30080546001600160a01b0319166001600160a01b03928316179055604051838216918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116620002865760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526200027d91906004016200058e565b60405180910390fd5b62000293600882620003e9565b15620002d757604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526200027d91906004016200058e565b620002e460088262000410565b506040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b6001600160a01b038116620003625760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526200027d91906004016200058e565b6200036f600d8262000410565b620003b257604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526200027d91906004016200058e565b6040516001600160a01b038216907f7afd798379ae2d2e5035438544cea2b60eb1dde6a8128e6d447fd2a25f8825a290600090a250565b6001600160a01b038116600090815260018301602052604081205415155b90505b92915050565b600062000407836001600160a01b03841660008181526001830160205260408120546200046a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200040a565b5060006200040a565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620004a157600080fd5b919050565b60006020808385031215620004ba57600080fd5b82516001600160401b0380821115620004d257600080fd5b818501915085601f830112620004e757600080fd5b815181811115620004fc57620004fc62000473565b8060051b604051601f19603f8301168101818110858211171562000524576200052462000473565b6040529182528482019250838101850191888311156200054357600080fd5b938501935b828510156200056c576200055c8562000489565b8452938501939285019262000548565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b60006020808352835180602085015260005b81811015620005be57858101830151858201604001528201620005a0565b506000604082860101526040601f19601f8301168501019250505092915050565b614a3980620005ef6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c8063a1174e7d11610130578063c8fe3a01116100b8578063d911c6321161007c578063d911c63214610521578063ee885b1214610529578063eecc66f41461053c578063fc207c011461054f578063ff3a14ab1461056257600080fd5b8063c8fe3a01146104b2578063ca78c41a146104c7578063d0c27c4f146104e8578063d4bd44a0146104fb578063d7a3158a1461050e57600080fd5b8063b7f227ee116100ff578063b7f227ee1461045e578063ba428b1a14610471578063c0f2208414610484578063c179b85f1461048c578063c87d13241461049f57600080fd5b8063a1174e7d14610410578063ac8a584a14610425578063b2b99ec914610438578063b2e76b8e1461044b57600080fd5b80633c2544d1116101be578063813049ec11610182578063813049ec146103a45780639283ae3a146103b75780639d209048146103ca5780639ee86d38146103ea578063a09449a6146103fd57600080fd5b80633c2544d114610336578063581f8b9b146103585780636b883c391461036b5780636d70f7ae1461037e5780637e4465e71461039157600080fd5b80631290abe8116102055780631290abe8146102ba57806322bbda64146102da578063242cae9f146102fa578063313745111461030d57806339bf397e1461032057600080fd5b80630175015214610237578063035759e11461027d57806303cc879314610292578063081814db146102a5575b600080fd5b61026861024536600461391a565b6001600160a01b0390811660009081526007602052604090206002015416151590565b60405190151581526020015b60405180910390f35b61029061028b366004613937565b610575565b005b6102906102a0366004613950565b6106e9565b6102ad6107aa565b60405161027491906139c2565b6102cd6102c8366004613937565b610a15565b6040516102749190613add565b6102ed6102e8366004613af0565b610af9565b6040516102749190613b91565b61029061030836600461391a565b610c8b565b61029061031b366004613be8565b610cd2565b610328610d5e565b604051908152602001610274565b610349610344366004613937565b610d6f565b60405161027493929190613c29565b610290610366366004613c72565b610f01565b610290610379366004613ce8565b6110a1565b61026861038c36600461391a565b6111d3565b61029061039f366004613e0c565b6111e6565b6102906103b236600461391a565b6113de565b6102ad6103c5366004613937565b6114d9565b6103dd6103d836600461391a565b61163c565b6040516102749190613ee7565b6102906103f8366004613efa565b6117bd565b61029061040b366004613f3f565b61195a565b610418611c33565b6040516102749190613f9a565b61029061043336600461391a565b611e07565b61029061044636600461391a565b611f6a565b610290610459366004613ffe565b612133565b61029061046c366004614054565b612232565b61029061047f366004613be8565b612481565b61032861250d565b61029061049a36600461391a565b612518565b6103286104ad36600461391a565b61255c565b6104ba61257d565b6040516102749190614079565b6104da6104d5366004613950565b612589565b6040516102749291906140c6565b6102686104f6366004613937565b612708565b61026861050936600461391a565b612714565b61029061051c3660046140fa565b612721565b6104ba6128b6565b610290610537366004613efa565b6128c2565b61029061054a36600461414c565b612af2565b61026861055d366004613937565b612cbd565b6102906105703660046141ab565b612cca565b33610581600d82613023565b6105c45760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b60405180910390fd5b816105d0600a82613048565b61060b5760408051808201825260098152681393d517d193d5539160ba1b6020820152905162461bcd60e51b81526105bb919060040161421f565b6000838152600c60205260409020541561067e576000838152600c6020526040902080548061063c5761063c614232565b60008281526020812060036000199093019283020181815560018101805467ffffffffffffffff191690559061067560028301826137b2565b5050905561060b565b6000838152600c60205260408120610695916137ec565b6106a0600a84613060565b50604080518481526001600160401b0360208201526080818301819052600090820152600160608201529051600080516020614a198339815191529181900360a00190a1505050565b6000806106f58161306c565b838118908411028318848111908590030284019150505b808310156107a55760006107208185613076565b600081815260026020819052604082209081018054939450909290915b818110156107955761078c856000600f01600086858154811061076257610762614248565b60009182526020808320909101546001600160a01b03168352820192909252604001902090613082565b5060010161073d565b505050505082600101925061070c565b505050565b60606000806107b9600a61306c565b905060005b818110156107fa5760006107d3600a83613076565b6000818152600c60205260409020549091506107ef9085614274565b9350506001016107be565b506000826001600160401b0381111561081557610815613d6a565b60405190808252806020026020018201604052801561086257816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816108335790505b5090506000610871600a61306c565b90506000805b82811015610a0a57600061088c600a83613076565b6000818152600c6020908152604080832080548251818502810185019093528083529495509293909291849084015b8282101561099f57600084815260209081902060408051606081018252600386029092018054835260018101546001600160401b0316938301939093526002830180549293929184019161090e90614287565b80601f016020809104026020016040519081016040528092919081815260200182805461093a90614287565b80156109875780601f1061095c57610100808354040283529160200191610987565b820191906000526020600020905b81548152906001019060200180831161096a57829003601f168201915b505050505081525050815260200190600101906108bb565b50505050905060005b81518110156109fc578181815181106109c3576109c3614248565b60200260200101518786806109d7906142bb565b9750815181106109e9576109e9614248565b60209081029190910101526001016109a8565b505050806001019050610877565b509195945050505050565b60408051600080825260208201819052818301819052606080830191909152608082015290819052610a468261308e565b600082815260026020818152604092839020835160a0810185528154815260018201546001600160401b0380821683860152600160401b8204811683880152600160801b9091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610ae957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610acb575b5050505050815250509050919050565b6001600160a01b0383166000908152600f60205260408120606091610b1d8261306c565b905083811881851102841885811186820302806001600160401b03811115610b4757610b47613d6a565b604051908082528060200260200182016040528015610b8057816020015b610b6d61380d565b815260200190600190039081610b655790505b50945060005b81811015610c7f576000868281518110610ba257610ba2614248565b60200260200101519050610bc1828a018761307690919063ffffffff16565b808252600090815260026020818152604092839020835160a0810185528154815260018201546001600160401b0380821683860152600160401b8204811683880152600160801b9091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610c6757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c49575b50505091909252505050602090910152600101610b86565b50505050509392505050565b610c936130d4565b6001600160a01b0316336001600160a01b031614610cc6576040516365f4906560e01b81523360048201526024016105bb565b610ccf81613102565b50565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff16610d1c57604051630ef4733760e31b815260040160405180910390fd5b60005b818110156107a557610d56838383818110610d3c57610d3c614248565b9050602002016020810190610d51919061391a565b6131d4565b600101610d1f565b6000610d6a600561306c565b905090565b60408051600080825260208201819052818301819052606080830182905260808301819052928290529091610da38461308e565b600084815260026020818152604080842060048352818520546003845294829020825160a0810184528254815260018301546001600160401b0380821683880152600160401b8204811683870152600160801b90910416606082015294820180548451818702810187019095528085529296959194919387936080860193919291830182828015610e5d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e3f575b5050505050815250509250808054610e7490614287565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea090614287565b8015610eed5780601f10610ec257610100808354040283529160200191610eed565b820191906000526020600020905b815481529060010190602001808311610ed057829003601f168201915b505050505090509250925092509193909250565b6001600160a01b03808316600090815260076020526040902060020154839116610f6157604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b33610f6d600882613023565b610fa75760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b03808516600090815260076020526040902060030154859133911681146110055760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b0386166000908152600760205260409020805461102c9060ff1687613299565b80548690829060ff1916600183600581111561104a5761104a613e5b565b021790555060028101546040516001600160a01b03909116907f20891cc7622c7951cbd8c70c61a5201eb45625b8c00e8f6c986cfca78f3dbfa0906110909089906142d4565b60405180910390a250505050505050565b336000818152600760205260409020600201546001600160a01b03166110fd57604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b866111078161342c565b86866111138282613478565b60008a815260026020819052604082209189918c918c9185919061113a9083018585613857565b5050929092555061114e905060008c613082565b5060008b8152600360205260409020611168878983614349565b5060008b81526004602052604090208890556111858b8b8b613504565b7f55ef7efc60ef99743e54209752c9a8e047e013917ec91572db75875069dd65bb8b8b8b8b8b8b6040516111be96959493929190614474565b60405180910390a15050505050505050505050565b60006111e0600883613023565b92915050565b336111f2600882613023565b61122c5760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b0380841660009081526007602052604090206002015484911661128c57604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b03808516600090815260076020526040902060030154859133911681146112ea5760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b0386166000908152600760209081526040918290209151611314918891016144b4565b604051602081830303815290604052805190602001208160010160405160200161133e91906144d0565b604051602081830303815290604052805190602001200361138e5760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001810161139c8782614546565b5060028101546040516001600160a01b03909116907f4505168a8705a16fd4d0575197fd0f510db69df93a065e158ad2c0957ba12bac9061109090899061421f565b6113e66130d4565b6001600160a01b0316336001600160a01b031614611419576040516365f4906560e01b81523360048201526024016105bb565b6001600160a01b03811661145c5760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b611467600d82613566565b6114a25760408051808201825260098152681393d517d193d5539160ba1b6020820152905162461bcd60e51b81526105bb919060040161421f565b6040516001600160a01b038216907ff9889c857e5356066b564327caa757c325ecbc001b2b47d72edf8cf9aedb1be590600090a250565b6060816114e7600a82613048565b6115225760408051808201825260098152681393d517d193d5539160ba1b6020820152905162461bcd60e51b81526105bb919060040161421f565b6000838152600c6020908152604080832080548251818502810185019093528083529193909284015b8282101561162f57600084815260209081902060408051606081018252600386029092018054835260018101546001600160401b0316938301939093526002830180549293929184019161159e90614287565b80601f01602080910402602001604051908101604052809291908181526020018280546115ca90614287565b80156116175780601f106115ec57610100808354040283529160200191611617565b820191906000526020600020905b8154815290600101906020018083116115fa57829003601f168201915b5050505050815250508152602001906001019061154b565b5050505091505b50919050565b6116676040805160808101909152806000815260606020820181905260006040830181905291015290565b611672600583613023565b6116b257604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b038216600090815260076020526040908190208151608081019092528054829060ff1660058111156116ed576116ed613e5b565b60058111156116fe576116fe613e5b565b815260200160018201805461171290614287565b80601f016020809104026020016040519081016040528092919081815260200182805461173e90614287565b801561178b5780601f106117605761010080835404028352916020019161178b565b820191906000526020600020905b81548152906001019060200180831161176e57829003601f168201915b505050918352505060028201546001600160a01b03908116602083015260039092015490911660409091015292915050565b816117c78161308e565b336000818152600760205260409020600201546001600160a01b031661182357604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b60008481526002602081815260408084206001600160a01b0388168552600f909252909220908201906118569087613082565b50805460005b818110156118de57866001600160a01b031683828154811061188057611880614248565b6000918252602090912001546001600160a01b0316036118d657604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526105bb919060040161421f565b60010161185c565b50815460018082018455600084815260209081902090920180546001600160a01b0319166001600160a01b038a16908117909155604080518b8152938401919091528201527faaa473c28a5fe04b6a7ecd795826e462f9d0c23f00ef9f51ec02fa6ea418806f906060015b60405180910390a150505050505050565b33611966600d82613023565b6119a05760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b67fffffffffffffffe196001600160401b038516016119ee5760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b6000829003611a2c5760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b611a37600a86613048565b611a4857611a46600a86613082565b505b6000858152600c6020526040812054905b81811015611b2f576000878152600c6020526040902080546001600160401b038816919083908110611a8d57611a8d614248565b60009182526020909120600160039092020101546001600160401b031603611b27576000878152600c6020526040902080548691869184908110611ad357611ad3614248565b90600052602060002090600302016002019182611af1929190614349565b50600080516020614a19833981519152878787876000604051611b18959493929190614603565b60405180910390a15050611c2c565b600101611a59565b506000600c0160008781526020019081526020016000206040518060600160405280888152602001876001600160401b0316815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525050835460018082018655948252602091829020845160039092020190815590830151938101805467ffffffffffffffff19166001600160401b03909516949094179093555060408101519091906002820190611bf99082614546565b505050600080516020614a19833981519152868686866000604051611c22959493929190614603565b60405180910390a1505b5050505050565b60606000611c41600561306c565b6001600160401b03811115611c5857611c58613d6a565b604051908082528060200260200182016040528015611cb457816020015b611ca16040805160808101909152806000815260606020820181905260006040830181905291015290565b815260200190600190039081611c765790505b50905060005b611cc4600561306c565b8110156116365760076000611cda600584613076565b6001600160a01b03168152602081019190915260409081016000208151608081019092528054829060ff166005811115611d1657611d16613e5b565b6005811115611d2757611d27613e5b565b8152602001600182018054611d3b90614287565b80601f0160208091040260200160405190810160405280929190818152602001828054611d6790614287565b8015611db45780601f10611d8957610100808354040283529160200191611db4565b820191906000526020600020905b815481529060010190602001808311611d9757829003601f168201915b505050918352505060028201546001600160a01b0390811660208301526003909201549091166040909101528251839083908110611df457611df4614248565b6020908102919091010152600101611cba565b611e0f6130d4565b6001600160a01b0316336001600160a01b031614611e42576040516365f4906560e01b81523360048201526024016105bb565b611e4d600882613023565b611e9157604080518082018252601281527113d41154905513d497d393d517d193d5539160721b6020820152905162461bcd60e51b81526105bb919060040161421f565b60005b611e9e600561306c565b811015611f26576001600160a01b03821660076000611ebe600585613076565b6001600160a01b0390811682526020820192909252604001600020600301541603611f1e57604080518082018252600d81526c4f55545f4f465f424f554e445360981b6020820152905162461bcd60e51b81526105bb919060040161421f565b600101611e94565b50611f32600882613566565b506040516001600160a01b038216907f80c0b871b97b595b16a7741c1b06fed0c6f6f558639f18ccbce50724325dc40d90600090a250565b6001600160a01b0380821660009081526007602052604090206003015482913391168114611fc85760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b038381166000908152600760205260409020600201541661202657604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b60056001600160a01b03841660009081526007602052604090205460ff16600581111561205557612055613e5b565b1461209e5760408051808201825260168152751393d11157d4d510551157d393d517d0531313d5d15160521b6020820152905162461bcd60e51b81526105bb919060040161421f565b6120a9600584613566565b506001600160a01b0383166000908152600760205260408120805460ff19168155906120d860018301826137b2565b506002810180546001600160a01b03199081169091556003909101805490911690556040516001600160a01b038416907fcfc24166db4bb677e857cacabd1541fb2b30645021b27c5130419589b84db52b90600090a2505050565b336000818152600760205260409020600201546001600160a01b031661218f57604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b836121998161342c565b6121a66080840184614640565b6121b08282613478565b6121bb600088613082565b50600087815260026020526040902085906121d68282614715565b505060008781526004602052604090208690556121ff876121fa6080880188614640565b613504565b7fac1b69e6e0382c43def3cccabf63091ba47b5d8b10a705d16a1076668643fe4d878787604051611949939291906147e4565b3361223e600d82613023565b6122785760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6000805b6000858152600c60205260409020548110156123f9576000858152600c6020526040902080546001600160401b0386169190839081106122be576122be614248565b60009182526020909120600160039092020101546001600160401b0316036123f1576000858152600c6020526040902080546122fc906001906148ad565b8154811061230c5761230c614248565b90600052602060002090600302016000600c016000878152602001908152602001600020828154811061234157612341614248565b600091825260209091208254600390920201908155600180830154908201805467ffffffffffffffff19166001600160401b0390921691909117905560028082019061238f908401826148c0565b5050506000858152600c602052604090208054806123af576123af614232565b60008281526020812060036000199093019283020181815560018101805467ffffffffffffffff19169055906123e860028301826137b2565b50509055600191505b60010161227c565b50806124365760408051808201825260098152681393d517d193d5539160ba1b6020820152905162461bcd60e51b81526105bb919060040161421f565b604080518581526001600160401b03851660208201526080818301819052600090820152600160608201529051600080516020614a198339815191529181900360a00190a150505050565b7f59b501c3653afc186af7d48dda36cf6732bd21629a6295693664240a6ef5200054640100000000900460ff166124cb57604051630ef4733760e31b815260040160405180910390fd5b60005b818110156107a5576125058383838181106124eb576124eb614248565b9050602002016020810190612500919061391a565b613102565b6001016124ce565b6000610d6a8161306c565b6125206130d4565b6001600160a01b0316336001600160a01b031614612553576040516365f4906560e01b81523360048201526024016105bb565b610ccf816131d4565b6001600160a01b0381166000908152600f602052604081206111e09061306c565b6060610d6a600561357b565b60606000806125978161306c565b9050838118818511028418858111868203026000816001600160401b038111156125c3576125c3613d6a565b6040519080825280602002602001820160405280156125fc57816020015b6125e961380d565b8152602001906001900390816125e15790505b50905060005b828110156126f657600082828151811061261e5761261e614248565b6020908102919091010151905061263860008b8401613076565b808252600090815260026020818152604092839020835160a0810185528154815260018201546001600160401b0380821683860152600160401b8204811683880152600160801b90910416606082015292810180548551818502810185019096528086529394919360808601938301828280156126de57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116126c0575b50505091909252505050602090910152600101612602565b509450505083101590505b9250929050565b60006111e08183613048565b60006111e0600d83613023565b336000818152600760205260409020600201546001600160a01b031661277d57604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b856127878161308e565b6000878152600260205260409020600180820154600160801b900416156127e357604080518082018252600d81526c14d51491505357d4d150531151609a1b6020820152905162461bcd60e51b81526105bb919060040161421f565b60018101546001600160401b0380871691161061282f5760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b6000888152600360205260408120612846916137b2565b85815560018101805467ffffffffffffffff19166001600160401b03871617905583156128a0576001818101805467ffffffffffffffff60801b198116600160801b918290046001600160401b0316909317029190911790555b6128ac88878787613588565b5050505050505050565b6060610d6a600861357b565b816128cc8161308e565b336000818152600760205260409020600201546001600160a01b031661292857604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b60008481526002602081815260408084206001600160a01b0388168552600f9092529092209082019061295b9087613060565b508054600090815b81811015612a5e57876001600160a01b031684828154811061298757612987614248565b6000918252602090912001546001600160a01b031603612a5657836129ad6001846148ad565b815481106129bd576129bd614248565b9060005260206000200160009054906101000a90046001600160a01b03168482815481106129ed576129ed614248565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083805480612a2b57612a2b614232565b600082815260209020810160001990810180546001600160a01b031916905501905560019250612a5e565b600101612963565b5081612aa057604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b604080518981526001600160a01b038916602082015260008183015290517faaa473c28a5fe04b6a7ecd795826e462f9d0c23f00ef9f51ec02fa6ea418806f9181900360600190a15050505050505050565b33612afe600882613023565b612b385760408051808201825260088152670848288be82aaa8960c31b6020820152905162461bcd60e51b81526105bb919060040161421f565b6001600160a01b038481166000908152600760205260409020600201541615612b9757604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526105bb919060040161421f565b60006040518060800160405280846005811115612bb657612bb6613e5b565b8152602081018690526001600160a01b0387166040820152336060909101529050612be26005866135d5565b506001600160a01b03851660009081526007602052604090208151815483929190829060ff19166001836005811115612c1d57612c1d613e5b565b021790555060208201516001820190612c369082614546565b506040828101516002830180546001600160a01b03199081166001600160a01b03938416179091556060909401516003909301805490941692811692909217909255905133918716907f759154d15a6aec80ceab7bc8820f46ebc53ad68bb18f47afb77483fea9dcc9ff90612cae9088908890614990565b60405180910390a35050505050565b60006111e0600a83613048565b336000818152600760205260409020600201546001600160a01b0316612d2657604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b816000819003612d655760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b60005b81811015611c2c5736858583818110612d8357612d83614248565b60a002919091019150612d9a905060008235613048565b612e12577f75460fe319331413a18a82d99b07735cec53fa0c4061ada38c2141e331082afa81356040830135612dd660808501606086016149b2565b60408051808201825260098152681393d517d193d5539160ba1b60208201529051612e0494939291906149cf565b60405180910390a15061301b565b80356000908152600260205260409020600180820154600160801b90041615612eae577f75460fe319331413a18a82d99b07735cec53fa0c4061ada38c2141e331082afa82356040840135612e6d60808601606087016149b2565b604080518082018252600d81526c14d51491505357d4d150531151609a1b60208201529051612e9f94939291906149cf565b60405180910390a1505061301b565b612ebe60808301606084016149b2565b60018201546001600160401b03918216911610612f39577f75460fe319331413a18a82d99b07735cec53fa0c4061ada38c2141e331082afa82356040840135612f0d60808601606087016149b2565b60408051808201825260078152664241445f41524760c81b60208201529051612e9f94939291906149cf565b60018101546001600160401b0316600003612f675781356000908152600360205260408120612f67916137b2565b60408201358155612f7e60808301606084016149b2565b60018201805467ffffffffffffffff19166001600160401b0392909216919091179055612fb160a08301608084016149fd565b15612fe9576001818101805467ffffffffffffffff60801b198116600160801b918290046001600160401b0316909317029190911790555b6130188235604084013561300360808601606087016149b2565b61301360a08701608088016149fd565b613588565b50505b600101612d68565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b60008181526001830160205260408120541515613041565b600061304183836135ea565b60006111e0825490565b600061304183836136dd565b60006130418383613707565b613099600082613048565b610ccf5760408051808201825260098152681393d517d193d5539160ba1b6020820152905162461bcd60e51b81526105bb919060040161421f565b7f4675fa8241f86f37157864d3d49b85ad4b164352c516da28e1678a90470ae300546001600160a01b031690565b6001600160a01b0381166131455760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b613150600882613023565b1561319157604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526105bb919060040161421f565b61319c6008826135d5565b506040516001600160a01b038216907fac6fa858e9350a46cec16539926e0fde25b7629f84b5a72bffaae4df888ae86d90600090a250565b6001600160a01b0381166132175760408051808201825260078152664241445f41524760c81b6020820152905162461bcd60e51b81526105bb919060040161421f565b613222600d826135d5565b61326257604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526105bb919060040161421f565b6040516001600160a01b038216907f7afd798379ae2d2e5035438544cea2b60eb1dde6a8128e6d447fd2a25f8825a290600090a250565b60008260058111156132ad576132ad613e5b565b1480613301575060018260058111156132c8576132c8613e5b565b148015613301575060038160058111156132e4576132e4613e5b565b1480613301575060048160058111156132ff576132ff613e5b565b145b806133545750600282600581111561331b5761331b613e5b565b1480156133545750600381600581111561333757613337613e5b565b14806133545750600481600581111561335257613352613e5b565b145b806133a75750600482600581111561336e5761336e613e5b565b1480156133a75750600381600581111561338a5761338a613e5b565b14806133a7575060058160058111156133a5576133a5613e5b565b145b806133df575060038260058111156133c1576133c1613e5b565b1480156133df575060058160058111156133dd576133dd613e5b565b145b156133e8575050565b60408051808201825260168152751393d11157d4d510551157d393d517d0531313d5d15160521b6020820152905162461bcd60e51b81526105bb919060040161421f565b613437600082613048565b15610ccf57604080518082018252600e81526d414c52454144595f45584953545360901b6020820152905162461bcd60e51b81526105bb919060040161421f565b8060005b818110156134fe576134b684848381811061349957613499614248565b90506020020160208101906134ae919061391a565b600590613023565b6134f657604080518082018252600e81526d1393d11157d393d517d193d5539160921b6020820152905162461bcd60e51b81526105bb919060040161421f565b60010161347c565b50505050565b60005b818110156134fe5761355d84600f600086868681811061352957613529614248565b905060200201602081019061353e919061391a565b6001600160a01b03168152602081019190915260400160002090613082565b50600101613507565b6000613041836001600160a01b0384166135ea565b6060600061304183613756565b60007fccc26bbb6dd655ea0bb8a40a3c30e35c6bdf42f8faf0d71bbea897af768cda8b9050604051856000528460205283604052826060528160806000a160405250506000606052505050565b6000613041836001600160a01b038416613707565b600081815260018301602052604081205480156136d357600061360e6001836148ad565b8554909150600090613622906001906148ad565b905080821461368757600086600001828154811061364257613642614248565b906000526020600020015490508087600001848154811061366557613665614248565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061369857613698614232565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506111e0565b60009150506111e0565b60008260000182815481106136f4576136f4614248565b9060005260206000200154905092915050565b600081815260018301602052604081205461374e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556111e0565b5060006111e0565b6060816000018054806020026020016040519081016040528092919081815260200182805480156137a657602002820191906000526020600020905b815481526020019060010190808311613792575b50505050509050919050565b5080546137be90614287565b6000825580601f106137ce575050565b601f016020900490600052602060002090810190610ccf91906138ba565b5080546000825560030290600052602060002090810190610ccf91906138cf565b6040805180820190915260008152602081016138526040805160a081018252600080825260208201819052918101829052606080820192909252608081019190915290565b905290565b8280548282559060005260206000209081019282156138aa579160200282015b828111156138aa5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613877565b506138b69291506138ba565b5090565b5b808211156138b657600081556001016138bb565b808211156138b657600080825560018201805467ffffffffffffffff191690556138fc60028301826137b2565b506003016138cf565b6001600160a01b0381168114610ccf57600080fd5b60006020828403121561392c57600080fd5b813561304181613905565b60006020828403121561394957600080fd5b5035919050565b6000806040838503121561396357600080fd5b50508035926020909101359150565b60005b8381101561398d578181015183820152602001613975565b50506000910152565b600081518084526139ae816020860160208601613972565b601f01601f19169290920160200192915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015613a3e57888303603f19018552815180518452878101516001600160401b0316888501528601516060878501819052613a2a81860183613996565b9689019694505050908601906001016139eb565b509098975050505050505050565b600060a08301825184526020808401516001600160401b0380821660208801528060408701511660408801528060608701511660608801525050608084015160a0608087015282815180855260c0