diff --git a/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json b/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json index a592a2e..ee947a3 100644 --- a/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json +++ b/artifacts/contracts/CunaFinanceBsc.sol/CunaFinanceBsc.json @@ -650,19 +650,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "depositRewards", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -2157,8 +2144,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615f5380620000e66000396000f3fe608060405234801561001057600080fd5b506004361061045e5760003560e01c80638129fc1c1161024c578063bed9757e11610146578063d9193025116100c3578063ef5d9ae811610087578063ef5d9ae814610c7c578063f109208f14610c9c578063f2bb563014610caf578063fe2f50d014610cc2578063ffecf51614610ccb57600080fd5b8063d919302514610c1a578063da1b436414610c2d578063e88f8e6614610c4d578063eacdc5ff14610c60578063eb44e0a314610c6957600080fd5b8063c7b530b01161010a578063c7b530b014610b78578063cc573a9114610b98578063ce13d09014610bd4578063ce3432c314610be7578063cfcf331914610c0757600080fd5b8063bed9757e14610aa9578063c267660314610aca578063c32d3ae214610ad2578063c36d03fd14610b00578063c6b61e4c14610b1357600080fd5b806396fd111a116101d4578063ac97b41711610198578063ac97b417146109db578063b6c3dc4c146109ee578063b92a349f14610a0e578063bc0bc6ba14610a21578063bd84477d14610a4157600080fd5b806396fd111a146109295780639cb6f556146109495780639f3a676c1461095c578063a0d46758146109a8578063aaf4b04d146109c857600080fd5b80638bdf67f21161021b5780638bdf67f2146108bd5780638da5cb5b146108d05780638f82818f146108e35780639437e32e14610903578063953d16bf1461091657600080fd5b80638129fc1c1461086f578063853e0df21461087757806387b4b1051461088a5780638851ec0f146108aa57600080fd5b806343a32f891161035d57806361d1080b116102e557806374d1c8e3116102a957806374d1c8e3146107ed5780637a0c6dc0146108005780637bc221ac146108205780637e6d99261461083357806380ca0ecf1461085c57600080fd5b806361d1080b1461079f57806362cd6a09146107a757806367a74ddc146107be5780636ef569a5146107d15780637065cb48146107da57600080fd5b806351e624721161032c57806351e624721461071e57806351f6cf2f14610731578063549e61d314610759578063581162271461076c578063592d1dd11461077f57600080fd5b806343a32f891461064b57806343c7c011146106c6578063441a4175146106d957806348ea286d1461070b57600080fd5b8063173825d9116103eb5780632ded58aa116103af5780632ded58aa146105c15780632e46fed8146105ca5780633ba8396e146105f35780633c92f98d146106165780633f35e7221461063857600080fd5b8063173825d91461056c5780631ada70a81461057f5780631aefa2d1146105885780631eb9e53e1461059b57806325d5971f146105ae57600080fd5b8063092c761011610432578063092c7610146105065780630a84096a146105265780630a910a6d146105395780630c7d63861461054257806313baee5b1461054c57600080fd5b8062159da6146104635780630137451814610489578063022914a7146104ca5780630519da32146104fd575b600080fd5b610476610471366004615670565b610cde565b6040519081526020015b60405180910390f35b6104b2610497366004615670565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610480565b6104ed6104d8366004615670565b60016020526000908152604090205460ff1681565b6040519015158152602001610480565b61047660095481565b610476610514366004615670565b60076020526000908152604090205481565b610476610534366004615692565b610d74565b61047660135481565b61054a610eac565b005b61047661055a366004615670565b600e6020526000908152604090205481565b61054a61057a366004615670565b611058565b61047660085481565b61054a6105963660046156bc565b611149565b6104766105a9366004615670565b61117d565b61054a6105bc3660046156bc565b6111b4565b61047660125481565b6104766105d8366004615670565b6001600160a01b03166000908152601b602052604090205490565b6104ed610601366004615670565b60026020526000908152604090205460ff1681565b610629610624366004615719565b6113c2565b60405161048093929190615795565b61054a610646366004615692565b6115b0565b610697610659366004615692565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610480949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61054a6106d4366004615670565b611637565b6106ec6106e73660046156bc565b6119bd565b604080516001600160a01b039093168352602083019190915201610480565b61054a610719366004615670565b6119f5565b61054a61072c3660046156bc565b611b89565b61074461073f366004615692565b611bbd565b60408051928352602083019190915201610480565b61054a6107673660046157cb565b611bf9565b61054a61077a366004615836565b611ec2565b61047661078d366004615670565b60066020526000908152604090205481565b601a54610476565b6107af6121b2565b60405161048093929190615858565b61054a6107cc366004615921565b612405565b61047660165481565b61054a6107e8366004615670565b612462565b61054a6107fb366004615954565b612537565b61081361080e366004615670565b61271a565b60405161048091906159bf565b61047661082e366004615670565b612801565b610476610841366004615670565b6001600160a01b031660009081526017602052604090205490565b61047661086a366004615692565b6129d4565b61054a612ae0565b61054a6108853660046156bc565b612d16565b610476610898366004615670565b600c6020526000908152604090205481565b61054a6108b8366004615a6d565b612db2565b61054a6108cb3660046156bc565b612ee5565b6000546104b2906001600160a01b031681565b6104766108f1366004615670565b60176020526000908152604090205481565b61054a610911366004615a99565b612f34565b61054a6109243660046156bc565b612f7b565b61093c610937366004615836565b613265565b6040516104809190615af1565b61054a6109573660046156bc565b613424565b61096f61096a3660046156bc565b61367e565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610480565b6109bb6109b6366004615692565b6136d1565b6040516104809190615b6a565b61054a6109d63660046156bc565b613761565b61054a6109e93660046156bc565b6137e7565b610a016109fc366004615692565b613bf8565b6040516104809190615b9e565b61054a610a1c366004615bd2565b613cf1565b610a34610a2f3660046156bc565b613eba565b6040516104809190615c05565b610a54610a4f366004615692565b613f7e565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610480565b610abc610ab7366004615692565b613ffc565b604051610480929190615c3e565b6103e7610476565b610ae5610ae0366004615670565b6141a2565b60408051938452602084019290925290820152606001610480565b61054a610b0e3660046156bc565b614201565b610b50610b213660046156bc565b600d60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610480565b610b8b610b86366004615670565b614235565b6040516104809190615c63565b610bab610ba6366004615692565b6142ca565b604080519485526020850193909352918301526001600160a01b03166060820152608001610480565b61054a610be23660046156bc565b614319565b610bfa610bf5366004615670565b61434d565b6040516104809190615ccc565b610bfa610c15366004615836565b61460d565b61054a610c283660046156bc565b614797565b610476610c3b366004615670565b600f6020526000908152604090205481565b610629610c5b366004615670565b6149d9565b61047660115481565b61054a610c77366004615692565b614bb3565b610476610c8a366004615670565b601b6020526000908152604090205481565b61054a610caa366004615692565b6150c7565b61054a610cbd366004615836565b6151c9565b61047660155481565b61054a610cd9366004615670565b6152da565b6001600160a01b0381166000908152600e6020908152604080832054600f909252822054805b601154811015610d6c578215610d5a576000818152600d602052604081206003015461271090610d349086615d5c565b610d3e9190615d73565b9050610d4a8186615d95565b9450610d568185615da8565b9350505b80610d6481615dbb565b915050610d04565b505050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110610da157610da1615dd4565b906000526020600020906009020190506000816006015442610dc39190615da8565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e9f576001600160a01b0383166000908152600460205260408120805483908110610e2257610e22615dd4565b6000918252602082206002909102018054600182015460088a015492945090929091606490610e5390600a90615d5c565b610e5d9190615d73565b9050828810610e8a57612710610e738383615d5c565b610e7d9190615d73565b610e879087615d95565b95505b5050505080610e9890615dbb565b9050610dd8565b5093505050505b92915050565b610eb4615353565b6000610ebf33610cde565b905060008111610eea5760405162461bcd60e51b8152600401610ee190615dea565b60405180910390fd5b336000908152600e602052604081208054839290610f09908490615da8565b925050819055508060126000828254610f229190615da8565b9091555050601154336000908152600f6020908152604080832093909355601b90529081208054839290610f57908490615d95565b9091555050336000908152601060209081526040918290208251608081018452600a5481529182018490526009549092820190610f949042615d95565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a2506110566001600080516020615efe83398151915255565b565b3360009081526001602052604090205460ff166110875760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03811660009081526001602052604090205460ff166110db5760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610ee1565b336001600160a01b038216036111285760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610ee1565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460ff166111785760405162461bcd60e51b8152600401610ee190615e14565b601655565b6001600160a01b0381166000908152600e6020526040812054816111a084610cde565b90506111ac8183615da8565b949350505050565b6111bc615353565b336000908152601060205260409020805461120f5760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610ee1565b60005b815481101561136d57600082828154811061122f5761122f615dd4565b90600052602060002090600402019050838160000154148015611256575060008160010154115b1561135a57806002015442101561129e5760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610ee1565b60018101805460038301546000909255906001600160a01b03167355d398326f99059ff775485246999027b31979558114611301576001600160a01b0381166000908152600c6020526040812080548492906112fb908490615da8565b90915550505b6113156001600160a01b038216338461539f565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a250505050506113a8565b508061136581615dbb565b915050611212565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610ee1565b6113bf6001600080516020615efe83398151915255565b50565b606080600083806001600160401b038111156113e0576113e0615e3c565b604051908082528060200260200182016040528015611409578160200160208202803683370190505b509350806001600160401b0381111561142457611424615e3c565b60405190808252806020026020018201604052801561144d578160200160208202803683370190505b50925060005b818110156115a757600087878381811061146f5761146f615dd4565b90506020020160208101906114849190615670565b6001600160a01b03811660009081526007602052604090205487519192509081908890859081106114b7576114b7615dd4565b6020908102919091018101919091526001600160a01b038381166000818152600590935260408084205490516302c68be360e31b81526004810192909252909116906316345f1890602401602060405180830381865afa15801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115439190615e52565b90506000670de0b6b3a764000061155a8484615d5c565b6115649190615d73565b90508088868151811061157957611579615dd4565b602090810291909101015261158e8188615d95565b965050505050808061159f90615dbb565b915050611453565b50509250925092565b3360009081526001602052604090205460ff166115df5760405162461bcd60e51b8152600401610ee190615e14565b6115f36001600160a01b038316338361539f565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b61163f615353565b6000805b3360009081526003602052604090205481101561174a5733600090815260036020526040812080548390811061167b5761167b615dd4565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156116b957506007810154600160a01b900460ff16155b156117375760006116ca33846129d4565b905081600301548111156117355760008260030154826116ea9190615da8565b90506116f68186615d95565b94508083600301600082825461170c9190615d95565b909155505082546003840154106117335760078301805460ff60a01b1916600160a01b1790555b505b505b508061174281615dbb565b915050611643565b506000811161176b5760405162461bcd60e51b8152600401610ee190615dea565b3360009081526006602052604090205415611874576001600160a01b038281166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156117e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180b9190615e52565b6118159190615d5c565b61181f9190615d73565b33600090815260066020526040902054909150811061184d5733600090815260066020526040812055611872565b336000908152600660205260408120805483929061186c908490615da8565b90915550505b505b6001600160a01b0382166000908152600760205260408120805483929061189c908490615da8565b909155505033600090815260106020526040808220815160808101909252600b80549193839291906118cd83615dbb565b919050558152602001838152602001600954426118ea9190615d95565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600c905281208054839290611965908490615d95565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506113bf6001600080516020615efe83398151915255565b601881815481106119cd57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526002602052604090205460ff16611a245760405162461bcd60e51b8152600401610ee190615e14565b60005b6001600160a01b038216600090815260036020526040902054811015611b85576001600160a01b0382166000908152600360205260408120805483908110611a7157611a71615dd4565b906000526020600020906009020190508060070160149054906101000a900460ff16611b495760088101546001600160a01b03841660009081526006602052604090205410611aed5760088101546001600160a01b03841660009081526006602052604081208054909190611ae7908490615da8565b90915550505b80546007808301546001600160a01b03166000908152602091909152604090205410611b495780546007808301546001600160a01b03166000908152602091909152604081208054909190611b43908490615da8565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b179055611b7e81615dbb565b9050611a27565b5050565b3360009081526001602052604090205460ff16611bb85760405162461bcd60e51b8152600401610ee190615e14565b601555565b60046020528160005260406000208181548110611bd957600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526002602052604090205460ff16611c285760405162461bcd60e51b8152600401610ee190615e14565b828114611c6f5760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610ee1565b82611cab5760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610ee1565b6000805b84811015611ea3576000868683818110611ccb57611ccb615dd4565b9050602002016020810190611ce09190615670565b6001600160a01b031603611d065760405162461bcd60e51b8152600401610ee190615e6b565b6000848483818110611d1a57611d1a615dd4565b9050602002013511611d3e5760405162461bcd60e51b8152600401610ee190615e94565b838382818110611d5057611d50615dd4565b90506020020135600e6000888885818110611d6d57611d6d615dd4565b9050602002016020810190611d829190615670565b6001600160a01b03168152602081019190915260400160002054611da69084615da8565b611db09190615d95565b9150838382818110611dc457611dc4615dd4565b90506020020135600e6000888885818110611de157611de1615dd4565b9050602002016020810190611df69190615670565b6001600160a01b03168152602081019190915260400160002055858582818110611e2257611e22615dd4565b9050602002016020810190611e379190615670565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611e7357611e73615dd4565b90506020020135604051611e8991815260200190565b60405180910390a280611e9b81615dbb565b915050611caf565b508060126000828254611eb69190615d95565b90915550505050505050565b611eca615353565b60008211611f0a5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610ee1565b60008111611f4f5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ee1565b601554821015611f975760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610ee1565b6000611fa23361117d565b905080831115611fed5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ee1565b600a8054906000611ffd83615dbb565b9091555050600a54336000908152600e602052604081208054869290612024908490615da8565b92505081905550836012600082825461203d9190615da8565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601880548084018255948190529651939095027fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e81018054949093169390941692909217905591517fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2f9091015590546121429190615da8565b33600081815260196020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a25050611b856001600080516020615efe83398151915255565b60185460609081908190806001600160401b038111156121d4576121d4615e3c565b6040519080825280602002602001820160405280156121fd578160200160208202803683370190505b509350806001600160401b0381111561221857612218615e3c565b604051908082528060200260200182016040528015612241578160200160208202803683370190505b509250806001600160401b0381111561225c5761225c615e3c565b6040519080825280602002602001820160405280156122c157816020015b6122ae6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b81526020019060019003908161227a5790505b50915060005b818110156123fe576000601882815481106122e4576122e4615dd4565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061233157612331615dd4565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061236857612368615dd4565b60209081029190910181019190915281516001600160a01b03908116600090815260148352604080822085850151835284529081902081516080810183528154815260018201549481019490945260028101549092169083015260030154606082015284518590849081106123df576123df615dd4565b60200260200101819052505080806123f690615dbb565b9150506122c7565b5050909192565b3360009081526001602052604090205460ff166124345760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03918216600090815260056020526040902080546001600160a01b03191691909216179055565b3360009081526001602052604090205460ff166124915760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b0381166124b75760405162461bcd60e51b8152600401610ee190615e6b565b6001600160a01b03811660009081526001602052604090205460ff16156125105760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610ee1565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526002602052604090205460ff166125665760405162461bcd60e51b8152600401610ee190615e14565b60036000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600660008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126de9190615d95565b90915550506001600160a01b0384166000908152600760205260408120805489929061270b908490615d95565b90915550505050505050505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127f657600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff161515610100840152600801546101208301529083529092019101612752565b505050509050919050565b6001600160a01b038116600090815260036020526040812054815b818110156129cd576001600160a01b038416600090815260036020526040812080548390811061284e5761284e615dd4565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506129ba5760e0810180516001600160a01b0390811660009081526005602052604080822054935190516302c68be360e31b815290831660048201529092909116906316345f1890602401602060405180830381865afa15801561294b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296f9190615e52565b90506000826060015183600001516129879190615da8565b90506000670de0b6b3a764000061299e8385615d5c565b6129a89190615d73565b90506129b48188615d95565b96505050505b50806129c581615dbb565b91505061281c565b5050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110612a0157612a01615dd4565b906000526020600020906009020190506000816006015442612a239190615da8565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e9f576001600160a01b0383166000908152600460205260408120805483908110612a8257612a82615dd4565b600091825260209091206002909102018054600182015491925090818710612acc57875461271090612ab5908390615d5c565b612abf9190615d73565b612ac99086615d95565b94505b50505080612ad990615dbb565b9050612a38565b6000612aea615403565b805490915060ff600160401b82041615906001600160401b0316600081158015612b115750825b90506000826001600160401b03166001148015612b2d5750303b155b905081158015612b3b575080155b15612b595760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b8357845460ff60401b1916600160401b1785555b612b8b61542c565b600080546001600160a01b03191633908117825581526001602081815260408320805460ff1990811684179091557f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80548216841790557f62cf4150b20d3255eba0565c087b9107980561f805ca8d8f9daa6ef061b5102180548216841790557f07c745cf21e9841960aca585c508e8b656ab26f500f65e063e363f1e5431cb338054821684179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f3951584e4df0c05d84015a72c4987ad1375f6f18e35cb23b25e1962d5cdc88b68054909116909217909155600e905269021e19e0c9bab24000007f1bb03ff857d460e4be2e8598c7161d2f56c86cc4c1d1ef349cef03abd737fdc48190556012805491929091612cbd908490615d95565b90915550506201fa406009558315612d0f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526001602052604090205460ff16612d455760405162461bcd60e51b8152600401610ee190615e14565b612d647355d398326f99059ff775485246999027b3197955338361539f565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526001602052604090205460ff16612de15760405162461bcd60e51b8152600401610ee190615e14565b60115460009015612e2c576000600d60006001601154612e019190615da8565b81526020019081526020016000209050612e2884601254836001015484600201548761543c565b9150505b6040805160a081018252858152602080820186815260125483850190815260608085018781524260808701908152601180546000908152600d885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260118054906000612eda83615dbb565b919050555050505050565b3360009081526001602052604090205460ff16612f145760405162461bcd60e51b8152600401610ee190615e14565b6113bf7355d398326f99059ff775485246999027b31979553330846154d5565b3360009081526002602052604090205460ff16612f635760405162461bcd60e51b8152600401610ee190615e14565b612f738686868686864242612537565b505050505050565b33600090815260146020908152604080832084845290915290208054612fb35760405162461bcd60e51b8152600401610ee190615ebc565b60028101546001600160a01b031633146130005760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ee1565b8054601654600090612710906130169084615d5c565b6130209190615d73565b9050600061302e8284615da8565b336000908152600e6020526040812080549293508392909190613052908490615d95565b92505081905550806012600082825461306b9190615d95565b909155505081156130b257604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601460209081526040808320898452825280832083815560018082018590556002820180546001600160a01b0319169055600390910184905593835260198252808320898452909152812054601854909261311291615da8565b90508082146131d35760006018828154811061313057613130615dd4565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526018805491925082918590811061317c5761317c615dd4565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b60188054806131e4576131e4615ee7565b600082815260208082206002600019949094019384020180546001600160a01b031916815560010182905591909255338083526019825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b6060818311156132a75760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610ee1565b60115482106132ee5760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610ee1565b60006132fa8484615da8565b613305906001615d95565b90506000816001600160401b0381111561332157613321615e3c565b60405190808252806020026020018201604052801561338457816020015b6133716040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161333f5790505b50905060005b8281101561341b57600d60006133a08389615d95565b81526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508282815181106133fd576133fd615dd4565b6020026020010181905250808061341390615dbb565b91505061338a565b50949350505050565b61342c615353565b6000811161344c5760405162461bcd60e51b8152600401610ee190615e94565b6000601354116134955760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610ee1565b60006134a03361117d565b9050808211156134eb5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ee1565b6000612710601354846134fe9190615d5c565b6135089190615d73565b336000908152600e602052604081208054929350859290919061352c908490615da8565b9250508190555082601260008282546135459190615da8565b9091555050336000908152601b602052604081208054839290613569908490615d95565b9091555050600a805490600061357e83615dbb565b9091555050336000908152601060209081526040918290208251608081018452600a54815291820184905260095490928201906135bb9042615d95565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506113bf6001600080516020615efe83398151915255565b601a818154811061368e57600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6137056040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526001602052604090205460ff166137905760405162461bcd60e51b8152600401610ee190615e14565b6127108111156137e25760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610ee1565b601355565b6137ef615353565b3360009081526003602052604090205481106138455760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ee1565b33600090815260036020526040812080548390811061386657613866615dd4565b906000526020600020906009020190508060070160149054906101000a900460ff16156138c85760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610ee1565b60006138d433846129d4565b905081600301548110156139215760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ee1565b60008260030154826139339190615da8565b9050600081116139555760405162461bcd60e51b8152600401610ee190615dea565b808360030160008282546139699190615d95565b909155505082546003840154106139905760078301805460ff60a01b1916600160a01b1790555b3360009081526006602052604090205415613a9e5760078301546001600160a01b039081166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa158015613a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a359190615e52565b613a3f9190615d5c565b613a499190615d73565b336000908152600660205260409020549091508110613a775733600090815260066020526040812055613a9c565b3360009081526006602052604081208054839290613a96908490615da8565b90915550505b505b6007838101546001600160a01b03166000908152602091909152604081208054839290613acc908490615da8565b909155505033600090815260106020526040808220815160808101909252600b8054919383929190613afd83615dbb565b91905055815260200183815260200160095442613b1a9190615d95565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600c905281208054839290613b9d908490615d95565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506113bf6001600080516020615efe83398151915255565b613c2c604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152601060205260408120905b815481101561136d5783828281548110613c6257613c62615dd4565b90600052602060002090600402016000015403613cdf57818181548110613c8b57613c8b615dd4565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610ea6915050565b80613ce981615dbb565b915050613c46565b3360009081526001602052604090205460ff16613d205760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b038316613d6e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610ee1565b600081118015613d8057506127108111155b613dc15760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610ee1565b6001600160a01b0383166000908152600460205260408120613de2916155cc565b6000825b612710821015613e7f5782612710613dfe8285615d95565b1115613e1357613e1083612710615da8565b90505b6001600160a01b0386166000908152600460209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613e6b8184615d95565b9250613e778583615d95565b915050613de6565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613eec6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6011548210613f2f5760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610ee1565b506000908152600d6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60036020528160005260406000208181548110613f9a57600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b03821660009081526003602052604081208054606092839290918590811061402d5761402d615dd4565b600091825260208083206007600990930201918201546001600160a01b03168084526004909152604083205491935091816001600160401b0381111561407557614075615e3c565b60405190808252806020026020018201604052801561409e578160200160208202803683370190505b5090506000826001600160401b038111156140bb576140bb615e3c565b6040519080825280602002602001820160405280156140e4578160200160208202803683370190505b50905060005b83811015614191576001600160a01b038516600090815260046020526040812080548390811061411c5761411c615dd4565b90600052602060002090600202019050806000015487600601546141409190615d95565b84838151811061415257614152615dd4565b602002602001018181525050806001015483838151811061417557614175615dd4565b60209081029190910101525061418a81615dbb565b90506140ea565b5090955093505050505b9250929050565b6000806000806141b185610cde565b6001600160a01b0386166000908152600e60205260409020549091506141d8908290615da8565b6001600160a01b0386166000908152600e602052604090205490945090925090505b9193909250565b3360009081526001602052604090205460ff166142305760405162461bcd60e51b8152600401610ee190615e14565b600855565b6001600160a01b0381166000908152601060209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127f657600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b03166060830152908352909201910161426d565b601060205281600052604060002081815481106142e657600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526001602052604090205460ff166143485760405162461bcd60e51b8152600401610ee190615e14565b600955565b60606001600160a01b0382166143755760405162461bcd60e51b8152600401610ee190615e6b565b6000805b601a5481101561442557836001600160a01b0316601a82815481106143a0576143a0615dd4565b60009182526020909120600460069092020101546001600160a01b031614806144005750836001600160a01b0316601a82815481106143e1576143e1615dd4565b60009182526020909120600560069092020101546001600160a01b0316145b15614413578161440f81615dbb565b9250505b8061441d81615dbb565b915050614379565b508060000361446757604080516000808252602082019092529061445f565b61444c6155ed565b8152602001906001900390816144445790505b509392505050565b6000816001600160401b0381111561448157614481615e3c565b6040519080825280602002602001820160405280156144ba57816020015b6144a76155ed565b81526020019060019003908161449f5790505b5090506000805b601a5481101561460357856001600160a01b0316601a82815481106144e8576144e8615dd4565b60009182526020909120600460069092020101546001600160a01b031614806145485750856001600160a01b0316601a828154811061452957614529615dd4565b60009182526020909120600560069092020101546001600160a01b0316145b156145f157601a818154811061456057614560615dd4565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a082015283518490849081106145d7576145d7615dd4565b602002602001018190525081806145ed90615dbb565b9250505b806145fb81615dbb565b9150506144c1565b5090949350505050565b601a5460609083106146615760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610ee1565b600061466d8385615d95565b601a5490915081111561467f5750601a545b600061468b8583615da8565b6001600160401b038111156146a2576146a2615e3c565b6040519080825280602002602001820160405280156146db57816020015b6146c86155ed565b8152602001906001900390816146c05790505b509050845b8281101561341b57601a81815481106146fb576146fb615dd4565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826147698884615da8565b8151811061477957614779615dd4565b6020026020010181905250808061478f90615dbb565b9150506146e0565b61479f615353565b3360009081526003602052604090205481106147f55760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ee1565b33600090815260036020526040812080548390811061481657614816615dd4565b9060005260206000209060090201905060006148323384610d74565b9050816004015481101561487f5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ee1565b60008260040154826148919190615da8565b9050600081116148b35760405162461bcd60e51b8152600401610ee190615dea565b808360040160008282546148c79190615d95565b9091555050336000908152601b6020526040812080548392906148eb908490615d95565b90915550503360009081526010602052604090819020815160808101909252908061491987620f4240615d95565b8152602001838152602001600954426149329190615d95565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613bd6565b6001600160a01b0381166000908152600e6020908152604080832054600f9092528220546011546060938493909290918390614a16908390615da8565b905080600003614a475750506040805160008082526020820181815282840190935290955090935091506141fa9050565b806001600160401b03811115614a5f57614a5f615e3c565b604051908082528060200260200182016040528015614a88578160200160208202803683370190505b509550806001600160401b03811115614aa357614aa3615e3c565b604051908082528060200260200182016040528015614acc578160200160208202803683370190505b50945060005b81811015614ba8576000614ae68285615d95565b905080888381518110614afb57614afb615dd4565b60209081029190910101528415614b74576000818152600d602052604081206003015461271090614b2c9088615d5c565b614b369190615d73565b905080888481518110614b4b57614b4b615dd4565b6020908102919091010152614b608188615d95565b9650614b6c8187615da8565b955050614b95565b6000878381518110614b8857614b88615dd4565b6020026020010181815250505b5080614ba081615dbb565b915050614ad2565b505050509193909250565b614bbb615353565b6001600160a01b038216600090815260146020908152604080832084845290915290208054614bfc5760405162461bcd60e51b8152600401610ee190615ebc565b336001600160a01b03841603614c4d5760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610ee1565b8054600182015460038301546000828411614c69576000614c73565b614c738385615da8565b9050600084614c8483612710615d5c565b614c8e9190615d73565b90506000612710614c9f8380615d5c565b614ca99190615d73565b90506000612710614cba8389615d5c565b614cc49190615d73565b90506000614cd28289615da8565b9050614cf47355d398326f99059ff775485246999027b3197955338d8a6154d5565b336000908152600e602052604081208054839290614d13908490615d95565b925050819055508060126000828254614d2c9190615d95565b90915550506001600160a01b038b1660009081526017602052604081208054899290614d59908490615d95565b92505081905550601a6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601960008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601880549050614f089190615da8565b9050808214614fc957600060188281548110614f2657614f26615dd4565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260188054919250829185908110614f7257614f72615dd4565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b6018805480614fda57614fda615ee7565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601960008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f60405161509d929190918252602082015260400190565b60405180910390a35050505050505050505050611b856001600080516020615efe83398151915255565b3360009081526002602052604090205460ff166150f65760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03821661511c5760405162461bcd60e51b8152600401610ee190615e6b565b6000811161513c5760405162461bcd60e51b8152600401610ee190615e94565b6001600160a01b0382166000908152600e6020526040902054601254829161516391615da8565b61516d9190615d95565b6012556001600160a01b0382166000818152600e602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839906151bd9084815260200190565b60405180910390a25050565b336000908152601460209081526040808320858452909152902080546152015760405162461bcd60e51b8152600401610ee190615ebc565b60028101546001600160a01b0316331461524e5760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ee1565b600082116152935760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ee1565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b3360009081526001602052604090205460ff166153095760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03811661532f5760405162461bcd60e51b8152600401610ee190615e6b565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020615efe83398151915280546001190161538557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615efe83398151915255565b6040516001600160a01b038381166024830152604482018390526153fe91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050615514565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610ea6565b615434615585565b6110566155aa565b6000821580615449575084155b15615456575060006154cc565b60008561546588612710615d5c565b61546f9190615d73565b905060008461548087612710615d5c565b61548a9190615d73565b905080821161549e576000925050506154cc565b60006154aa8284615da8565b905060006127106154bb8784615d5c565b6154c59190615d73565b9450505050505b95945050505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261550e9186918216906323b872dd906084016153cc565b50505050565b600080602060008451602086016000885af180615537576040513d6000823e3d81fd5b50506000513d9150811561554f57806001141561555c565b6001600160a01b0384163b155b1561550e57604051635274afe760e01b81526001600160a01b0385166004820152602401610ee1565b61558d6155b2565b61105657604051631afcd79f60e31b815260040160405180910390fd5b61538b615585565b60006155bc615403565b54600160401b900460ff16919050565b50805460008255600202906000526020600020908101906113bf9190615635565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156156505760008082556001820155600201615636565b5090565b80356001600160a01b038116811461566b57600080fd5b919050565b60006020828403121561568257600080fd5b61568b82615654565b9392505050565b600080604083850312156156a557600080fd5b6156ae83615654565b946020939093013593505050565b6000602082840312156156ce57600080fd5b5035919050565b60008083601f8401126156e757600080fd5b5081356001600160401b038111156156fe57600080fd5b6020830191508360208260051b850101111561419b57600080fd5b6000806020838503121561572c57600080fd5b82356001600160401b0381111561574257600080fd5b61574e858286016156d5565b90969095509350505050565b600081518084526020808501945080840160005b8381101561578a5781518752958201959082019060010161576e565b509495945050505050565b6060815260006157a8606083018661575a565b82810360208401526157ba818661575a565b915050826040830152949350505050565b600080600080604085870312156157e157600080fd5b84356001600160401b03808211156157f857600080fd5b615804888389016156d5565b9096509450602087013591508082111561581d57600080fd5b5061582a878288016156d5565b95989497509550505050565b6000806040838503121561584957600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b8381101561589b5781516001600160a01b031685529382019390820190600101615876565b5050858303818701526158ae838961575a565b868103604088015287518082528289019450908201925060005b818110156159125761590284865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b93820193928501926001016158c8565b50919998505050505050505050565b6000806040838503121561593457600080fd5b61593d83615654565b915061594b60208401615654565b90509250929050565b600080600080600080600080610100898b03121561597157600080fd5b61597a89615654565b975060208901359650604089013595506060890135945061599d60808a01615654565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b82811015615a605781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b03169086015261010080820151151590860152610120908101519085015261014090930192908501906001016159dc565b5091979650505050505050565b600080600060608486031215615a8257600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215615ab257600080fd5b615abb87615654565b9550602087013594506040870135935060608701359250615ade60808801615654565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015615b5e57615b4b83855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a09290920191600101615b0d565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610ea6565b8151815260208083015190820152604080830151908201526060808301516001600160a01b03169082015260808101610ea6565b600080600060608486031215615be757600080fd5b615bf084615654565b95602085013595506040909401359392505050565b60a08101610ea6828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615c51604083018561575a565b82810360208401526154cc818561575a565b6020808252825182820181905260009190848201906040850190845b81811015615b5e57615cb98385518051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b9284019260809290920191600101615c7f565b602080825282518282018190526000919060409081850190868401855b82811015615a605781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615ce9565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ea657610ea6615d46565b600082615d9057634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ea657610ea6615d46565b81810381811115610ea657610ea6615d46565b600060018201615dcd57615dcd615d46565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615e6457600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220cefa1f1dbeb757d2b4b9cdbcf5ed76af6810ae8862bb732c4d65124df18f4cb864736f6c63430008140033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061045e5760003560e01c80638129fc1c1161024c578063bed9757e11610146578063d9193025116100c3578063ef5d9ae811610087578063ef5d9ae814610c7c578063f109208f14610c9c578063f2bb563014610caf578063fe2f50d014610cc2578063ffecf51614610ccb57600080fd5b8063d919302514610c1a578063da1b436414610c2d578063e88f8e6614610c4d578063eacdc5ff14610c60578063eb44e0a314610c6957600080fd5b8063c7b530b01161010a578063c7b530b014610b78578063cc573a9114610b98578063ce13d09014610bd4578063ce3432c314610be7578063cfcf331914610c0757600080fd5b8063bed9757e14610aa9578063c267660314610aca578063c32d3ae214610ad2578063c36d03fd14610b00578063c6b61e4c14610b1357600080fd5b806396fd111a116101d4578063ac97b41711610198578063ac97b417146109db578063b6c3dc4c146109ee578063b92a349f14610a0e578063bc0bc6ba14610a21578063bd84477d14610a4157600080fd5b806396fd111a146109295780639cb6f556146109495780639f3a676c1461095c578063a0d46758146109a8578063aaf4b04d146109c857600080fd5b80638bdf67f21161021b5780638bdf67f2146108bd5780638da5cb5b146108d05780638f82818f146108e35780639437e32e14610903578063953d16bf1461091657600080fd5b80638129fc1c1461086f578063853e0df21461087757806387b4b1051461088a5780638851ec0f146108aa57600080fd5b806343a32f891161035d57806361d1080b116102e557806374d1c8e3116102a957806374d1c8e3146107ed5780637a0c6dc0146108005780637bc221ac146108205780637e6d99261461083357806380ca0ecf1461085c57600080fd5b806361d1080b1461079f57806362cd6a09146107a757806367a74ddc146107be5780636ef569a5146107d15780637065cb48146107da57600080fd5b806351e624721161032c57806351e624721461071e57806351f6cf2f14610731578063549e61d314610759578063581162271461076c578063592d1dd11461077f57600080fd5b806343a32f891461064b57806343c7c011146106c6578063441a4175146106d957806348ea286d1461070b57600080fd5b8063173825d9116103eb5780632ded58aa116103af5780632ded58aa146105c15780632e46fed8146105ca5780633ba8396e146105f35780633c92f98d146106165780633f35e7221461063857600080fd5b8063173825d91461056c5780631ada70a81461057f5780631aefa2d1146105885780631eb9e53e1461059b57806325d5971f146105ae57600080fd5b8063092c761011610432578063092c7610146105065780630a84096a146105265780630a910a6d146105395780630c7d63861461054257806313baee5b1461054c57600080fd5b8062159da6146104635780630137451814610489578063022914a7146104ca5780630519da32146104fd575b600080fd5b610476610471366004615670565b610cde565b6040519081526020015b60405180910390f35b6104b2610497366004615670565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610480565b6104ed6104d8366004615670565b60016020526000908152604090205460ff1681565b6040519015158152602001610480565b61047660095481565b610476610514366004615670565b60076020526000908152604090205481565b610476610534366004615692565b610d74565b61047660135481565b61054a610eac565b005b61047661055a366004615670565b600e6020526000908152604090205481565b61054a61057a366004615670565b611058565b61047660085481565b61054a6105963660046156bc565b611149565b6104766105a9366004615670565b61117d565b61054a6105bc3660046156bc565b6111b4565b61047660125481565b6104766105d8366004615670565b6001600160a01b03166000908152601b602052604090205490565b6104ed610601366004615670565b60026020526000908152604090205460ff1681565b610629610624366004615719565b6113c2565b60405161048093929190615795565b61054a610646366004615692565b6115b0565b610697610659366004615692565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610480949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61054a6106d4366004615670565b611637565b6106ec6106e73660046156bc565b6119bd565b604080516001600160a01b039093168352602083019190915201610480565b61054a610719366004615670565b6119f5565b61054a61072c3660046156bc565b611b89565b61074461073f366004615692565b611bbd565b60408051928352602083019190915201610480565b61054a6107673660046157cb565b611bf9565b61054a61077a366004615836565b611ec2565b61047661078d366004615670565b60066020526000908152604090205481565b601a54610476565b6107af6121b2565b60405161048093929190615858565b61054a6107cc366004615921565b612405565b61047660165481565b61054a6107e8366004615670565b612462565b61054a6107fb366004615954565b612537565b61081361080e366004615670565b61271a565b60405161048091906159bf565b61047661082e366004615670565b612801565b610476610841366004615670565b6001600160a01b031660009081526017602052604090205490565b61047661086a366004615692565b6129d4565b61054a612ae0565b61054a6108853660046156bc565b612d16565b610476610898366004615670565b600c6020526000908152604090205481565b61054a6108b8366004615a6d565b612db2565b61054a6108cb3660046156bc565b612ee5565b6000546104b2906001600160a01b031681565b6104766108f1366004615670565b60176020526000908152604090205481565b61054a610911366004615a99565b612f34565b61054a6109243660046156bc565b612f7b565b61093c610937366004615836565b613265565b6040516104809190615af1565b61054a6109573660046156bc565b613424565b61096f61096a3660046156bc565b61367e565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610480565b6109bb6109b6366004615692565b6136d1565b6040516104809190615b6a565b61054a6109d63660046156bc565b613761565b61054a6109e93660046156bc565b6137e7565b610a016109fc366004615692565b613bf8565b6040516104809190615b9e565b61054a610a1c366004615bd2565b613cf1565b610a34610a2f3660046156bc565b613eba565b6040516104809190615c05565b610a54610a4f366004615692565b613f7e565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610480565b610abc610ab7366004615692565b613ffc565b604051610480929190615c3e565b6103e7610476565b610ae5610ae0366004615670565b6141a2565b60408051938452602084019290925290820152606001610480565b61054a610b0e3660046156bc565b614201565b610b50610b213660046156bc565b600d60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610480565b610b8b610b86366004615670565b614235565b6040516104809190615c63565b610bab610ba6366004615692565b6142ca565b604080519485526020850193909352918301526001600160a01b03166060820152608001610480565b61054a610be23660046156bc565b614319565b610bfa610bf5366004615670565b61434d565b6040516104809190615ccc565b610bfa610c15366004615836565b61460d565b61054a610c283660046156bc565b614797565b610476610c3b366004615670565b600f6020526000908152604090205481565b610629610c5b366004615670565b6149d9565b61047660115481565b61054a610c77366004615692565b614bb3565b610476610c8a366004615670565b601b6020526000908152604090205481565b61054a610caa366004615692565b6150c7565b61054a610cbd366004615836565b6151c9565b61047660155481565b61054a610cd9366004615670565b6152da565b6001600160a01b0381166000908152600e6020908152604080832054600f909252822054805b601154811015610d6c578215610d5a576000818152600d602052604081206003015461271090610d349086615d5c565b610d3e9190615d73565b9050610d4a8186615d95565b9450610d568185615da8565b9350505b80610d6481615dbb565b915050610d04565b505050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110610da157610da1615dd4565b906000526020600020906009020190506000816006015442610dc39190615da8565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e9f576001600160a01b0383166000908152600460205260408120805483908110610e2257610e22615dd4565b6000918252602082206002909102018054600182015460088a015492945090929091606490610e5390600a90615d5c565b610e5d9190615d73565b9050828810610e8a57612710610e738383615d5c565b610e7d9190615d73565b610e879087615d95565b95505b5050505080610e9890615dbb565b9050610dd8565b5093505050505b92915050565b610eb4615353565b6000610ebf33610cde565b905060008111610eea5760405162461bcd60e51b8152600401610ee190615dea565b60405180910390fd5b336000908152600e602052604081208054839290610f09908490615da8565b925050819055508060126000828254610f229190615da8565b9091555050601154336000908152600f6020908152604080832093909355601b90529081208054839290610f57908490615d95565b9091555050336000908152601060209081526040918290208251608081018452600a5481529182018490526009549092820190610f949042615d95565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a2506110566001600080516020615efe83398151915255565b565b3360009081526001602052604090205460ff166110875760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03811660009081526001602052604090205460ff166110db5760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610ee1565b336001600160a01b038216036111285760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610ee1565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460ff166111785760405162461bcd60e51b8152600401610ee190615e14565b601655565b6001600160a01b0381166000908152600e6020526040812054816111a084610cde565b90506111ac8183615da8565b949350505050565b6111bc615353565b336000908152601060205260409020805461120f5760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610ee1565b60005b815481101561136d57600082828154811061122f5761122f615dd4565b90600052602060002090600402019050838160000154148015611256575060008160010154115b1561135a57806002015442101561129e5760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610ee1565b60018101805460038301546000909255906001600160a01b03167355d398326f99059ff775485246999027b31979558114611301576001600160a01b0381166000908152600c6020526040812080548492906112fb908490615da8565b90915550505b6113156001600160a01b038216338461539f565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a250505050506113a8565b508061136581615dbb565b915050611212565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610ee1565b6113bf6001600080516020615efe83398151915255565b50565b606080600083806001600160401b038111156113e0576113e0615e3c565b604051908082528060200260200182016040528015611409578160200160208202803683370190505b509350806001600160401b0381111561142457611424615e3c565b60405190808252806020026020018201604052801561144d578160200160208202803683370190505b50925060005b818110156115a757600087878381811061146f5761146f615dd4565b90506020020160208101906114849190615670565b6001600160a01b03811660009081526007602052604090205487519192509081908890859081106114b7576114b7615dd4565b6020908102919091018101919091526001600160a01b038381166000818152600590935260408084205490516302c68be360e31b81526004810192909252909116906316345f1890602401602060405180830381865afa15801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115439190615e52565b90506000670de0b6b3a764000061155a8484615d5c565b6115649190615d73565b90508088868151811061157957611579615dd4565b602090810291909101015261158e8188615d95565b965050505050808061159f90615dbb565b915050611453565b50509250925092565b3360009081526001602052604090205460ff166115df5760405162461bcd60e51b8152600401610ee190615e14565b6115f36001600160a01b038316338361539f565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b61163f615353565b6000805b3360009081526003602052604090205481101561174a5733600090815260036020526040812080548390811061167b5761167b615dd4565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156116b957506007810154600160a01b900460ff16155b156117375760006116ca33846129d4565b905081600301548111156117355760008260030154826116ea9190615da8565b90506116f68186615d95565b94508083600301600082825461170c9190615d95565b909155505082546003840154106117335760078301805460ff60a01b1916600160a01b1790555b505b505b508061174281615dbb565b915050611643565b506000811161176b5760405162461bcd60e51b8152600401610ee190615dea565b3360009081526006602052604090205415611874576001600160a01b038281166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156117e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180b9190615e52565b6118159190615d5c565b61181f9190615d73565b33600090815260066020526040902054909150811061184d5733600090815260066020526040812055611872565b336000908152600660205260408120805483929061186c908490615da8565b90915550505b505b6001600160a01b0382166000908152600760205260408120805483929061189c908490615da8565b909155505033600090815260106020526040808220815160808101909252600b80549193839291906118cd83615dbb565b919050558152602001838152602001600954426118ea9190615d95565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600c905281208054839290611965908490615d95565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506113bf6001600080516020615efe83398151915255565b601881815481106119cd57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526002602052604090205460ff16611a245760405162461bcd60e51b8152600401610ee190615e14565b60005b6001600160a01b038216600090815260036020526040902054811015611b85576001600160a01b0382166000908152600360205260408120805483908110611a7157611a71615dd4565b906000526020600020906009020190508060070160149054906101000a900460ff16611b495760088101546001600160a01b03841660009081526006602052604090205410611aed5760088101546001600160a01b03841660009081526006602052604081208054909190611ae7908490615da8565b90915550505b80546007808301546001600160a01b03166000908152602091909152604090205410611b495780546007808301546001600160a01b03166000908152602091909152604081208054909190611b43908490615da8565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b179055611b7e81615dbb565b9050611a27565b5050565b3360009081526001602052604090205460ff16611bb85760405162461bcd60e51b8152600401610ee190615e14565b601555565b60046020528160005260406000208181548110611bd957600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526002602052604090205460ff16611c285760405162461bcd60e51b8152600401610ee190615e14565b828114611c6f5760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610ee1565b82611cab5760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610ee1565b6000805b84811015611ea3576000868683818110611ccb57611ccb615dd4565b9050602002016020810190611ce09190615670565b6001600160a01b031603611d065760405162461bcd60e51b8152600401610ee190615e6b565b6000848483818110611d1a57611d1a615dd4565b9050602002013511611d3e5760405162461bcd60e51b8152600401610ee190615e94565b838382818110611d5057611d50615dd4565b90506020020135600e6000888885818110611d6d57611d6d615dd4565b9050602002016020810190611d829190615670565b6001600160a01b03168152602081019190915260400160002054611da69084615da8565b611db09190615d95565b9150838382818110611dc457611dc4615dd4565b90506020020135600e6000888885818110611de157611de1615dd4565b9050602002016020810190611df69190615670565b6001600160a01b03168152602081019190915260400160002055858582818110611e2257611e22615dd4565b9050602002016020810190611e379190615670565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611e7357611e73615dd4565b90506020020135604051611e8991815260200190565b60405180910390a280611e9b81615dbb565b915050611caf565b508060126000828254611eb69190615d95565b90915550505050505050565b611eca615353565b60008211611f0a5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610ee1565b60008111611f4f5760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ee1565b601554821015611f975760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610ee1565b6000611fa23361117d565b905080831115611fed5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ee1565b600a8054906000611ffd83615dbb565b9091555050600a54336000908152600e602052604081208054869290612024908490615da8565b92505081905550836012600082825461203d9190615da8565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601880548084018255948190529651939095027fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e81018054949093169390941692909217905591517fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2f9091015590546121429190615da8565b33600081815260196020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a25050611b856001600080516020615efe83398151915255565b60185460609081908190806001600160401b038111156121d4576121d4615e3c565b6040519080825280602002602001820160405280156121fd578160200160208202803683370190505b509350806001600160401b0381111561221857612218615e3c565b604051908082528060200260200182016040528015612241578160200160208202803683370190505b509250806001600160401b0381111561225c5761225c615e3c565b6040519080825280602002602001820160405280156122c157816020015b6122ae6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b81526020019060019003908161227a5790505b50915060005b818110156123fe576000601882815481106122e4576122e4615dd4565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061233157612331615dd4565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061236857612368615dd4565b60209081029190910181019190915281516001600160a01b03908116600090815260148352604080822085850151835284529081902081516080810183528154815260018201549481019490945260028101549092169083015260030154606082015284518590849081106123df576123df615dd4565b60200260200101819052505080806123f690615dbb565b9150506122c7565b5050909192565b3360009081526001602052604090205460ff166124345760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03918216600090815260056020526040902080546001600160a01b03191691909216179055565b3360009081526001602052604090205460ff166124915760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b0381166124b75760405162461bcd60e51b8152600401610ee190615e6b565b6001600160a01b03811660009081526001602052604090205460ff16156125105760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610ee1565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526002602052604090205460ff166125665760405162461bcd60e51b8152600401610ee190615e14565b60036000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600660008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126de9190615d95565b90915550506001600160a01b0384166000908152600760205260408120805489929061270b908490615d95565b90915550505050505050505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127f657600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff161515610100840152600801546101208301529083529092019101612752565b505050509050919050565b6001600160a01b038116600090815260036020526040812054815b818110156129cd576001600160a01b038416600090815260036020526040812080548390811061284e5761284e615dd4565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506129ba5760e0810180516001600160a01b0390811660009081526005602052604080822054935190516302c68be360e31b815290831660048201529092909116906316345f1890602401602060405180830381865afa15801561294b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296f9190615e52565b90506000826060015183600001516129879190615da8565b90506000670de0b6b3a764000061299e8385615d5c565b6129a89190615d73565b90506129b48188615d95565b96505050505b50806129c581615dbb565b91505061281c565b5050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110612a0157612a01615dd4565b906000526020600020906009020190506000816006015442612a239190615da8565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e9f576001600160a01b0383166000908152600460205260408120805483908110612a8257612a82615dd4565b600091825260209091206002909102018054600182015491925090818710612acc57875461271090612ab5908390615d5c565b612abf9190615d73565b612ac99086615d95565b94505b50505080612ad990615dbb565b9050612a38565b6000612aea615403565b805490915060ff600160401b82041615906001600160401b0316600081158015612b115750825b90506000826001600160401b03166001148015612b2d5750303b155b905081158015612b3b575080155b15612b595760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b8357845460ff60401b1916600160401b1785555b612b8b61542c565b600080546001600160a01b03191633908117825581526001602081815260408320805460ff1990811684179091557f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80548216841790557f62cf4150b20d3255eba0565c087b9107980561f805ca8d8f9daa6ef061b5102180548216841790557f07c745cf21e9841960aca585c508e8b656ab26f500f65e063e363f1e5431cb338054821684179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f3951584e4df0c05d84015a72c4987ad1375f6f18e35cb23b25e1962d5cdc88b68054909116909217909155600e905269021e19e0c9bab24000007f1bb03ff857d460e4be2e8598c7161d2f56c86cc4c1d1ef349cef03abd737fdc48190556012805491929091612cbd908490615d95565b90915550506201fa406009558315612d0f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526001602052604090205460ff16612d455760405162461bcd60e51b8152600401610ee190615e14565b612d647355d398326f99059ff775485246999027b3197955338361539f565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526001602052604090205460ff16612de15760405162461bcd60e51b8152600401610ee190615e14565b60115460009015612e2c576000600d60006001601154612e019190615da8565b81526020019081526020016000209050612e2884601254836001015484600201548761543c565b9150505b6040805160a081018252858152602080820186815260125483850190815260608085018781524260808701908152601180546000908152600d885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260118054906000612eda83615dbb565b919050555050505050565b3360009081526001602052604090205460ff16612f145760405162461bcd60e51b8152600401610ee190615e14565b6113bf7355d398326f99059ff775485246999027b31979553330846154d5565b3360009081526002602052604090205460ff16612f635760405162461bcd60e51b8152600401610ee190615e14565b612f738686868686864242612537565b505050505050565b33600090815260146020908152604080832084845290915290208054612fb35760405162461bcd60e51b8152600401610ee190615ebc565b60028101546001600160a01b031633146130005760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ee1565b8054601654600090612710906130169084615d5c565b6130209190615d73565b9050600061302e8284615da8565b336000908152600e6020526040812080549293508392909190613052908490615d95565b92505081905550806012600082825461306b9190615d95565b909155505081156130b257604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601460209081526040808320898452825280832083815560018082018590556002820180546001600160a01b0319169055600390910184905593835260198252808320898452909152812054601854909261311291615da8565b90508082146131d35760006018828154811061313057613130615dd4565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526018805491925082918590811061317c5761317c615dd4565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b60188054806131e4576131e4615ee7565b600082815260208082206002600019949094019384020180546001600160a01b031916815560010182905591909255338083526019825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b6060818311156132a75760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610ee1565b60115482106132ee5760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610ee1565b60006132fa8484615da8565b613305906001615d95565b90506000816001600160401b0381111561332157613321615e3c565b60405190808252806020026020018201604052801561338457816020015b6133716040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161333f5790505b50905060005b8281101561341b57600d60006133a08389615d95565b81526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508282815181106133fd576133fd615dd4565b6020026020010181905250808061341390615dbb565b91505061338a565b50949350505050565b61342c615353565b6000811161344c5760405162461bcd60e51b8152600401610ee190615e94565b6000601354116134955760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610ee1565b60006134a03361117d565b9050808211156134eb5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ee1565b6000612710601354846134fe9190615d5c565b6135089190615d73565b336000908152600e602052604081208054929350859290919061352c908490615da8565b9250508190555082601260008282546135459190615da8565b9091555050336000908152601b602052604081208054839290613569908490615d95565b9091555050600a805490600061357e83615dbb565b9091555050336000908152601060209081526040918290208251608081018452600a54815291820184905260095490928201906135bb9042615d95565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506113bf6001600080516020615efe83398151915255565b601a818154811061368e57600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6137056040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526001602052604090205460ff166137905760405162461bcd60e51b8152600401610ee190615e14565b6127108111156137e25760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610ee1565b601355565b6137ef615353565b3360009081526003602052604090205481106138455760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ee1565b33600090815260036020526040812080548390811061386657613866615dd4565b906000526020600020906009020190508060070160149054906101000a900460ff16156138c85760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610ee1565b60006138d433846129d4565b905081600301548110156139215760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ee1565b60008260030154826139339190615da8565b9050600081116139555760405162461bcd60e51b8152600401610ee190615dea565b808360030160008282546139699190615d95565b909155505082546003840154106139905760078301805460ff60a01b1916600160a01b1790555b3360009081526006602052604090205415613a9e5760078301546001600160a01b039081166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa158015613a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a359190615e52565b613a3f9190615d5c565b613a499190615d73565b336000908152600660205260409020549091508110613a775733600090815260066020526040812055613a9c565b3360009081526006602052604081208054839290613a96908490615da8565b90915550505b505b6007838101546001600160a01b03166000908152602091909152604081208054839290613acc908490615da8565b909155505033600090815260106020526040808220815160808101909252600b8054919383929190613afd83615dbb565b91905055815260200183815260200160095442613b1a9190615d95565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600c905281208054839290613b9d908490615d95565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506113bf6001600080516020615efe83398151915255565b613c2c604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152601060205260408120905b815481101561136d5783828281548110613c6257613c62615dd4565b90600052602060002090600402016000015403613cdf57818181548110613c8b57613c8b615dd4565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610ea6915050565b80613ce981615dbb565b915050613c46565b3360009081526001602052604090205460ff16613d205760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b038316613d6e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610ee1565b600081118015613d8057506127108111155b613dc15760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610ee1565b6001600160a01b0383166000908152600460205260408120613de2916155cc565b6000825b612710821015613e7f5782612710613dfe8285615d95565b1115613e1357613e1083612710615da8565b90505b6001600160a01b0386166000908152600460209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613e6b8184615d95565b9250613e778583615d95565b915050613de6565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613eec6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6011548210613f2f5760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610ee1565b506000908152600d6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60036020528160005260406000208181548110613f9a57600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b03821660009081526003602052604081208054606092839290918590811061402d5761402d615dd4565b600091825260208083206007600990930201918201546001600160a01b03168084526004909152604083205491935091816001600160401b0381111561407557614075615e3c565b60405190808252806020026020018201604052801561409e578160200160208202803683370190505b5090506000826001600160401b038111156140bb576140bb615e3c565b6040519080825280602002602001820160405280156140e4578160200160208202803683370190505b50905060005b83811015614191576001600160a01b038516600090815260046020526040812080548390811061411c5761411c615dd4565b90600052602060002090600202019050806000015487600601546141409190615d95565b84838151811061415257614152615dd4565b602002602001018181525050806001015483838151811061417557614175615dd4565b60209081029190910101525061418a81615dbb565b90506140ea565b5090955093505050505b9250929050565b6000806000806141b185610cde565b6001600160a01b0386166000908152600e60205260409020549091506141d8908290615da8565b6001600160a01b0386166000908152600e602052604090205490945090925090505b9193909250565b3360009081526001602052604090205460ff166142305760405162461bcd60e51b8152600401610ee190615e14565b600855565b6001600160a01b0381166000908152601060209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127f657600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b03166060830152908352909201910161426d565b601060205281600052604060002081815481106142e657600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526001602052604090205460ff166143485760405162461bcd60e51b8152600401610ee190615e14565b600955565b60606001600160a01b0382166143755760405162461bcd60e51b8152600401610ee190615e6b565b6000805b601a5481101561442557836001600160a01b0316601a82815481106143a0576143a0615dd4565b60009182526020909120600460069092020101546001600160a01b031614806144005750836001600160a01b0316601a82815481106143e1576143e1615dd4565b60009182526020909120600560069092020101546001600160a01b0316145b15614413578161440f81615dbb565b9250505b8061441d81615dbb565b915050614379565b508060000361446757604080516000808252602082019092529061445f565b61444c6155ed565b8152602001906001900390816144445790505b509392505050565b6000816001600160401b0381111561448157614481615e3c565b6040519080825280602002602001820160405280156144ba57816020015b6144a76155ed565b81526020019060019003908161449f5790505b5090506000805b601a5481101561460357856001600160a01b0316601a82815481106144e8576144e8615dd4565b60009182526020909120600460069092020101546001600160a01b031614806145485750856001600160a01b0316601a828154811061452957614529615dd4565b60009182526020909120600560069092020101546001600160a01b0316145b156145f157601a818154811061456057614560615dd4565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a082015283518490849081106145d7576145d7615dd4565b602002602001018190525081806145ed90615dbb565b9250505b806145fb81615dbb565b9150506144c1565b5090949350505050565b601a5460609083106146615760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610ee1565b600061466d8385615d95565b601a5490915081111561467f5750601a545b600061468b8583615da8565b6001600160401b038111156146a2576146a2615e3c565b6040519080825280602002602001820160405280156146db57816020015b6146c86155ed565b8152602001906001900390816146c05790505b509050845b8281101561341b57601a81815481106146fb576146fb615dd4565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826147698884615da8565b8151811061477957614779615dd4565b6020026020010181905250808061478f90615dbb565b9150506146e0565b61479f615353565b3360009081526003602052604090205481106147f55760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ee1565b33600090815260036020526040812080548390811061481657614816615dd4565b9060005260206000209060090201905060006148323384610d74565b9050816004015481101561487f5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ee1565b60008260040154826148919190615da8565b9050600081116148b35760405162461bcd60e51b8152600401610ee190615dea565b808360040160008282546148c79190615d95565b9091555050336000908152601b6020526040812080548392906148eb908490615d95565b90915550503360009081526010602052604090819020815160808101909252908061491987620f4240615d95565b8152602001838152602001600954426149329190615d95565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613bd6565b6001600160a01b0381166000908152600e6020908152604080832054600f9092528220546011546060938493909290918390614a16908390615da8565b905080600003614a475750506040805160008082526020820181815282840190935290955090935091506141fa9050565b806001600160401b03811115614a5f57614a5f615e3c565b604051908082528060200260200182016040528015614a88578160200160208202803683370190505b509550806001600160401b03811115614aa357614aa3615e3c565b604051908082528060200260200182016040528015614acc578160200160208202803683370190505b50945060005b81811015614ba8576000614ae68285615d95565b905080888381518110614afb57614afb615dd4565b60209081029190910101528415614b74576000818152600d602052604081206003015461271090614b2c9088615d5c565b614b369190615d73565b905080888481518110614b4b57614b4b615dd4565b6020908102919091010152614b608188615d95565b9650614b6c8187615da8565b955050614b95565b6000878381518110614b8857614b88615dd4565b6020026020010181815250505b5080614ba081615dbb565b915050614ad2565b505050509193909250565b614bbb615353565b6001600160a01b038216600090815260146020908152604080832084845290915290208054614bfc5760405162461bcd60e51b8152600401610ee190615ebc565b336001600160a01b03841603614c4d5760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610ee1565b8054600182015460038301546000828411614c69576000614c73565b614c738385615da8565b9050600084614c8483612710615d5c565b614c8e9190615d73565b90506000612710614c9f8380615d5c565b614ca99190615d73565b90506000612710614cba8389615d5c565b614cc49190615d73565b90506000614cd28289615da8565b9050614cf47355d398326f99059ff775485246999027b3197955338d8a6154d5565b336000908152600e602052604081208054839290614d13908490615d95565b925050819055508060126000828254614d2c9190615d95565b90915550506001600160a01b038b1660009081526017602052604081208054899290614d59908490615d95565b92505081905550601a6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601960008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601880549050614f089190615da8565b9050808214614fc957600060188281548110614f2657614f26615dd4565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260188054919250829185908110614f7257614f72615dd4565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b6018805480614fda57614fda615ee7565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601960008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f60405161509d929190918252602082015260400190565b60405180910390a35050505050505050505050611b856001600080516020615efe83398151915255565b3360009081526002602052604090205460ff166150f65760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03821661511c5760405162461bcd60e51b8152600401610ee190615e6b565b6000811161513c5760405162461bcd60e51b8152600401610ee190615e94565b6001600160a01b0382166000908152600e6020526040902054601254829161516391615da8565b61516d9190615d95565b6012556001600160a01b0382166000818152600e602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839906151bd9084815260200190565b60405180910390a25050565b336000908152601460209081526040808320858452909152902080546152015760405162461bcd60e51b8152600401610ee190615ebc565b60028101546001600160a01b0316331461524e5760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ee1565b600082116152935760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ee1565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b3360009081526001602052604090205460ff166153095760405162461bcd60e51b8152600401610ee190615e14565b6001600160a01b03811661532f5760405162461bcd60e51b8152600401610ee190615e6b565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020615efe83398151915280546001190161538557604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615efe83398151915255565b6040516001600160a01b038381166024830152604482018390526153fe91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050615514565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610ea6565b615434615585565b6110566155aa565b6000821580615449575084155b15615456575060006154cc565b60008561546588612710615d5c565b61546f9190615d73565b905060008461548087612710615d5c565b61548a9190615d73565b905080821161549e576000925050506154cc565b60006154aa8284615da8565b905060006127106154bb8784615d5c565b6154c59190615d73565b9450505050505b95945050505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261550e9186918216906323b872dd906084016153cc565b50505050565b600080602060008451602086016000885af180615537576040513d6000823e3d81fd5b50506000513d9150811561554f57806001141561555c565b6001600160a01b0384163b155b1561550e57604051635274afe760e01b81526001600160a01b0385166004820152602401610ee1565b61558d6155b2565b61105657604051631afcd79f60e31b815260040160405180910390fd5b61538b615585565b60006155bc615403565b54600160401b900460ff16919050565b50805460008255600202906000526020600020908101906113bf9190615635565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156156505760008082556001820155600201615636565b5090565b80356001600160a01b038116811461566b57600080fd5b919050565b60006020828403121561568257600080fd5b61568b82615654565b9392505050565b600080604083850312156156a557600080fd5b6156ae83615654565b946020939093013593505050565b6000602082840312156156ce57600080fd5b5035919050565b60008083601f8401126156e757600080fd5b5081356001600160401b038111156156fe57600080fd5b6020830191508360208260051b850101111561419b57600080fd5b6000806020838503121561572c57600080fd5b82356001600160401b0381111561574257600080fd5b61574e858286016156d5565b90969095509350505050565b600081518084526020808501945080840160005b8381101561578a5781518752958201959082019060010161576e565b509495945050505050565b6060815260006157a8606083018661575a565b82810360208401526157ba818661575a565b915050826040830152949350505050565b600080600080604085870312156157e157600080fd5b84356001600160401b03808211156157f857600080fd5b615804888389016156d5565b9096509450602087013591508082111561581d57600080fd5b5061582a878288016156d5565b95989497509550505050565b6000806040838503121561584957600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b8381101561589b5781516001600160a01b031685529382019390820190600101615876565b5050858303818701526158ae838961575a565b868103604088015287518082528289019450908201925060005b818110156159125761590284865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b93820193928501926001016158c8565b50919998505050505050505050565b6000806040838503121561593457600080fd5b61593d83615654565b915061594b60208401615654565b90509250929050565b600080600080600080600080610100898b03121561597157600080fd5b61597a89615654565b975060208901359650604089013595506060890135945061599d60808a01615654565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b82811015615a605781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b03169086015261010080820151151590860152610120908101519085015261014090930192908501906001016159dc565b5091979650505050505050565b600080600060608486031215615a8257600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215615ab257600080fd5b615abb87615654565b9550602087013594506040870135935060608701359250615ade60808801615654565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015615b5e57615b4b83855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a09290920191600101615b0d565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610ea6565b8151815260208083015190820152604080830151908201526060808301516001600160a01b03169082015260808101610ea6565b600080600060608486031215615be757600080fd5b615bf084615654565b95602085013595506040909401359392505050565b60a08101610ea6828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615c51604083018561575a565b82810360208401526154cc818561575a565b6020808252825182820181905260009190848201906040850190845b81811015615b5e57615cb98385518051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b9284019260809290920191600101615c7f565b602080825282518282018190526000919060409081850190868401855b82811015615a605781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615ce9565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ea657610ea6615d46565b600082615d9057634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ea657610ea6615d46565b81810381811115610ea657610ea6615d46565b600060018201615dcd57615dcd615d46565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615e6457600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220cefa1f1dbeb757d2b4b9cdbcf5ed76af6810ae8862bb732c4d65124df18f4cb864736f6c63430008140033", + "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615ed780620000e66000396000f3fe608060405234801561001057600080fd5b50600436106104535760003560e01c80638129fc1c11610241578063c26766031161013b578063d9193025116100c3578063ef5d9ae811610087578063ef5d9ae814610c5e578063f109208f14610c7e578063f2bb563014610c91578063fe2f50d014610ca4578063ffecf51614610cad57600080fd5b8063d919302514610bfc578063da1b436414610c0f578063e88f8e6614610c2f578063eacdc5ff14610c42578063eb44e0a314610c4b57600080fd5b8063c7b530b01161010a578063c7b530b014610b5a578063cc573a9114610b7a578063ce13d09014610bb6578063ce3432c314610bc9578063cfcf331914610be957600080fd5b8063c267660314610aac578063c32d3ae214610ab4578063c36d03fd14610ae2578063c6b61e4c14610af557600080fd5b80639cb6f556116101c9578063b6c3dc4c1161018d578063b6c3dc4c146109d0578063b92a349f146109f0578063bc0bc6ba14610a03578063bd84477d14610a23578063bed9757e14610a8b57600080fd5b80639cb6f5561461092b5780639f3a676c1461093e578063a0d467581461098a578063aaf4b04d146109aa578063ac97b417146109bd57600080fd5b80638da5cb5b116102105780638da5cb5b146108b25780638f82818f146108c55780639437e32e146108e5578063953d16bf146108f857806396fd111a1461090b57600080fd5b80638129fc1c14610864578063853e0df21461086c57806387b4b1051461087f5780638851ec0f1461089f57600080fd5b806343a32f891161035257806361d1080b116102da57806374d1c8e31161029e57806374d1c8e3146107e25780637a0c6dc0146107f55780637bc221ac146108155780637e6d99261461082857806380ca0ecf1461085157600080fd5b806361d1080b1461079457806362cd6a091461079c57806367a74ddc146107b35780636ef569a5146107c65780637065cb48146107cf57600080fd5b806351e624721161032157806351e624721461071357806351f6cf2f14610726578063549e61d31461074e5780635811622714610761578063592d1dd11461077457600080fd5b806343a32f891461064057806343c7c011146106bb578063441a4175146106ce57806348ea286d1461070057600080fd5b8063173825d9116103e05780632ded58aa116103a45780632ded58aa146105b65780632e46fed8146105bf5780633ba8396e146105e85780633c92f98d1461060b5780633f35e7221461062d57600080fd5b8063173825d9146105615780631ada70a8146105745780631aefa2d11461057d5780631eb9e53e1461059057806325d5971f146105a357600080fd5b8063092c761011610427578063092c7610146104fb5780630a84096a1461051b5780630a910a6d1461052e5780630c7d63861461053757806313baee5b1461054157600080fd5b8062159da614610458578063013745181461047e578063022914a7146104bf5780630519da32146104f2575b600080fd5b61046b6104663660046155f4565b610cc0565b6040519081526020015b60405180910390f35b6104a761048c3660046155f4565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610475565b6104e26104cd3660046155f4565b60016020526000908152604090205460ff1681565b6040519015158152602001610475565b61046b60095481565b61046b6105093660046155f4565b60076020526000908152604090205481565b61046b610529366004615616565b610d56565b61046b60135481565b61053f610e8e565b005b61046b61054f3660046155f4565b600e6020526000908152604090205481565b61053f61056f3660046155f4565b61104f565b61046b60085481565b61053f61058b366004615640565b611140565b61046b61059e3660046155f4565b611174565b61053f6105b1366004615640565b6111ab565b61046b60125481565b61046b6105cd3660046155f4565b6001600160a01b03166000908152601b602052604090205490565b6104e26105f63660046155f4565b60026020526000908152604090205460ff1681565b61061e61061936600461569d565b6113b9565b60405161047593929190615719565b61053f61063b366004615616565b6115a7565b61068c61064e366004615616565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610475949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61053f6106c93660046155f4565b61162e565b6106e16106dc366004615640565b6119b4565b604080516001600160a01b039093168352602083019190915201610475565b61053f61070e3660046155f4565b6119ec565b61053f610721366004615640565b611b80565b610739610734366004615616565b611bb4565b60408051928352602083019190915201610475565b61053f61075c36600461574f565b611bf0565b61053f61076f3660046157ba565b611eb9565b61046b6107823660046155f4565b60066020526000908152604090205481565b601a5461046b565b6107a46121a9565b604051610475939291906157dc565b61053f6107c13660046158a5565b6123fc565b61046b60165481565b61053f6107dd3660046155f4565b612459565b61053f6107f03660046158d8565b61252e565b6108086108033660046155f4565b612711565b6040516104759190615943565b61046b6108233660046155f4565b6127f8565b61046b6108363660046155f4565b6001600160a01b031660009081526017602052604090205490565b61046b61085f366004615616565b6129cb565b61053f612ad7565b61053f61087a366004615640565b612d0d565b61046b61088d3660046155f4565b600c6020526000908152604090205481565b61053f6108ad3660046159f1565b612da9565b6000546104a7906001600160a01b031681565b61046b6108d33660046155f4565b60176020526000908152604090205481565b61053f6108f3366004615a1d565b612edc565b61053f610906366004615640565b612f23565b61091e6109193660046157ba565b61320d565b6040516104759190615a75565b61053f610939366004615640565b6133cc565b61095161094c366004615640565b613626565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610475565b61099d610998366004615616565b613679565b6040516104759190615aee565b61053f6109b8366004615640565b613709565b61053f6109cb366004615640565b61378f565b6109e36109de366004615616565b613ba0565b6040516104759190615b22565b61053f6109fe366004615b56565b613c99565b610a16610a11366004615640565b613e62565b6040516104759190615b89565b610a36610a31366004615616565b613f26565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610475565b610a9e610a99366004615616565b613fa4565b604051610475929190615bc2565b6103e761046b565b610ac7610ac23660046155f4565b61414a565b60408051938452602084019290925290820152606001610475565b61053f610af0366004615640565b6141a9565b610b32610b03366004615640565b600d60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610475565b610b6d610b683660046155f4565b6141dd565b6040516104759190615be7565b610b8d610b88366004615616565b614272565b604080519485526020850193909352918301526001600160a01b03166060820152608001610475565b61053f610bc4366004615640565b6142c1565b610bdc610bd73660046155f4565b6142f5565b6040516104759190615c50565b610bdc610bf73660046157ba565b6145b5565b61053f610c0a366004615640565b61473f565b61046b610c1d3660046155f4565b600f6020526000908152604090205481565b61061e610c3d3660046155f4565b61495d565b61046b60115481565b61053f610c59366004615616565b614b37565b61046b610c6c3660046155f4565b601b6020526000908152604090205481565b61053f610c8c366004615616565b61504b565b61053f610c9f3660046157ba565b61514d565b61046b60155481565b61053f610cbb3660046155f4565b61525e565b6001600160a01b0381166000908152600e6020908152604080832054600f909252822054805b601154811015610d4e578215610d3c576000818152600d602052604081206003015461271090610d169086615ce0565b610d209190615cf7565b9050610d2c8186615d19565b9450610d388185615d2c565b9350505b80610d4681615d3f565b915050610ce6565b505050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110610d8357610d83615d58565b906000526020600020906009020190506000816006015442610da59190615d2c565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e81576001600160a01b0383166000908152600460205260408120805483908110610e0457610e04615d58565b6000918252602082206002909102018054600182015460088a015492945090929091606490610e3590600a90615ce0565b610e3f9190615cf7565b9050828810610e6c57612710610e558383615ce0565b610e5f9190615cf7565b610e699087615d19565b95505b5050505080610e7a90615d3f565b9050610dba565b5093505050505b92915050565b610e966152d7565b6000610ea133610cc0565b905060008111610ecc5760405162461bcd60e51b8152600401610ec390615d6e565b60405180910390fd5b336000908152600e602052604081208054839290610eeb908490615d2c565b925050819055508060126000828254610f049190615d2c565b9091555050601154336000908152600f6020908152604080832093909355601b90529081208054839290610f39908490615d19565b9091555050600a8054906000610f4e83615d3f565b9091555050336000908152601060209081526040918290208251608081018452600a5481529182018490526009549092820190610f8b9042615d19565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a25061104d6001600080516020615e8283398151915255565b565b3360009081526001602052604090205460ff1661107e5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b03811660009081526001602052604090205460ff166110d25760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610ec3565b336001600160a01b0382160361111f5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610ec3565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460ff1661116f5760405162461bcd60e51b8152600401610ec390615d98565b601655565b6001600160a01b0381166000908152600e60205260408120548161119784610cc0565b90506111a38183615d2c565b949350505050565b6111b36152d7565b33600090815260106020526040902080546112065760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610ec3565b60005b815481101561136457600082828154811061122657611226615d58565b9060005260206000209060040201905083816000015414801561124d575060008160010154115b156113515780600201544210156112955760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610ec3565b60018101805460038301546000909255906001600160a01b03167355d398326f99059ff775485246999027b319795581146112f8576001600160a01b0381166000908152600c6020526040812080548492906112f2908490615d2c565b90915550505b61130c6001600160a01b0382163384615323565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a2505050505061139f565b508061135c81615d3f565b915050611209565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610ec3565b6113b66001600080516020615e8283398151915255565b50565b606080600083806001600160401b038111156113d7576113d7615dc0565b604051908082528060200260200182016040528015611400578160200160208202803683370190505b509350806001600160401b0381111561141b5761141b615dc0565b604051908082528060200260200182016040528015611444578160200160208202803683370190505b50925060005b8181101561159e57600087878381811061146657611466615d58565b905060200201602081019061147b91906155f4565b6001600160a01b03811660009081526007602052604090205487519192509081908890859081106114ae576114ae615d58565b6020908102919091018101919091526001600160a01b038381166000818152600590935260408084205490516302c68be360e31b81526004810192909252909116906316345f1890602401602060405180830381865afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190615dd6565b90506000670de0b6b3a76400006115518484615ce0565b61155b9190615cf7565b90508088868151811061157057611570615d58565b60209081029190910101526115858188615d19565b965050505050808061159690615d3f565b91505061144a565b50509250925092565b3360009081526001602052604090205460ff166115d65760405162461bcd60e51b8152600401610ec390615d98565b6115ea6001600160a01b0383163383615323565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b6116366152d7565b6000805b336000908152600360205260409020548110156117415733600090815260036020526040812080548390811061167257611672615d58565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156116b057506007810154600160a01b900460ff16155b1561172e5760006116c133846129cb565b9050816003015481111561172c5760008260030154826116e19190615d2c565b90506116ed8186615d19565b9450808360030160008282546117039190615d19565b9091555050825460038401541061172a5760078301805460ff60a01b1916600160a01b1790555b505b505b508061173981615d3f565b91505061163a565b50600081116117625760405162461bcd60e51b8152600401610ec390615d6e565b336000908152600660205260409020541561186b576001600160a01b038281166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156117de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118029190615dd6565b61180c9190615ce0565b6118169190615cf7565b3360009081526006602052604090205490915081106118445733600090815260066020526040812055611869565b3360009081526006602052604081208054839290611863908490615d2c565b90915550505b505b6001600160a01b03821660009081526007602052604081208054839290611893908490615d2c565b909155505033600090815260106020526040808220815160808101909252600b80549193839291906118c483615d3f565b919050558152602001838152602001600954426118e19190615d19565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600c90528120805483929061195c908490615d19565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506113b66001600080516020615e8283398151915255565b601881815481106119c457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526002602052604090205460ff16611a1b5760405162461bcd60e51b8152600401610ec390615d98565b60005b6001600160a01b038216600090815260036020526040902054811015611b7c576001600160a01b0382166000908152600360205260408120805483908110611a6857611a68615d58565b906000526020600020906009020190508060070160149054906101000a900460ff16611b405760088101546001600160a01b03841660009081526006602052604090205410611ae45760088101546001600160a01b03841660009081526006602052604081208054909190611ade908490615d2c565b90915550505b80546007808301546001600160a01b03166000908152602091909152604090205410611b405780546007808301546001600160a01b03166000908152602091909152604081208054909190611b3a908490615d2c565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b179055611b7581615d3f565b9050611a1e565b5050565b3360009081526001602052604090205460ff16611baf5760405162461bcd60e51b8152600401610ec390615d98565b601555565b60046020528160005260406000208181548110611bd057600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526002602052604090205460ff16611c1f5760405162461bcd60e51b8152600401610ec390615d98565b828114611c665760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610ec3565b82611ca25760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610ec3565b6000805b84811015611e9a576000868683818110611cc257611cc2615d58565b9050602002016020810190611cd791906155f4565b6001600160a01b031603611cfd5760405162461bcd60e51b8152600401610ec390615def565b6000848483818110611d1157611d11615d58565b9050602002013511611d355760405162461bcd60e51b8152600401610ec390615e18565b838382818110611d4757611d47615d58565b90506020020135600e6000888885818110611d6457611d64615d58565b9050602002016020810190611d7991906155f4565b6001600160a01b03168152602081019190915260400160002054611d9d9084615d2c565b611da79190615d19565b9150838382818110611dbb57611dbb615d58565b90506020020135600e6000888885818110611dd857611dd8615d58565b9050602002016020810190611ded91906155f4565b6001600160a01b03168152602081019190915260400160002055858582818110611e1957611e19615d58565b9050602002016020810190611e2e91906155f4565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611e6a57611e6a615d58565b90506020020135604051611e8091815260200190565b60405180910390a280611e9281615d3f565b915050611ca6565b508060126000828254611ead9190615d19565b90915550505050505050565b611ec16152d7565b60008211611f015760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610ec3565b60008111611f465760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ec3565b601554821015611f8e5760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610ec3565b6000611f9933611174565b905080831115611fe45760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ec3565b600a8054906000611ff483615d3f565b9091555050600a54336000908152600e60205260408120805486929061201b908490615d2c565b9250508190555083601260008282546120349190615d2c565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601880548084018255948190529651939095027fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e81018054949093169390941692909217905591517fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2f9091015590546121399190615d2c565b33600081815260196020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a25050611b7c6001600080516020615e8283398151915255565b60185460609081908190806001600160401b038111156121cb576121cb615dc0565b6040519080825280602002602001820160405280156121f4578160200160208202803683370190505b509350806001600160401b0381111561220f5761220f615dc0565b604051908082528060200260200182016040528015612238578160200160208202803683370190505b509250806001600160401b0381111561225357612253615dc0565b6040519080825280602002602001820160405280156122b857816020015b6122a56040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816122715790505b50915060005b818110156123f5576000601882815481106122db576122db615d58565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061232857612328615d58565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061235f5761235f615d58565b60209081029190910181019190915281516001600160a01b03908116600090815260148352604080822085850151835284529081902081516080810183528154815260018201549481019490945260028101549092169083015260030154606082015284518590849081106123d6576123d6615d58565b60200260200101819052505080806123ed90615d3f565b9150506122be565b5050909192565b3360009081526001602052604090205460ff1661242b5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b03918216600090815260056020526040902080546001600160a01b03191691909216179055565b3360009081526001602052604090205460ff166124885760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b0381166124ae5760405162461bcd60e51b8152600401610ec390615def565b6001600160a01b03811660009081526001602052604090205460ff16156125075760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610ec3565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526002602052604090205460ff1661255d5760405162461bcd60e51b8152600401610ec390615d98565b60036000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600660008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126d59190615d19565b90915550506001600160a01b03841660009081526007602052604081208054899290612702908490615d19565b90915550505050505050505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127ed57600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff161515610100840152600801546101208301529083529092019101612749565b505050509050919050565b6001600160a01b038116600090815260036020526040812054815b818110156129c4576001600160a01b038416600090815260036020526040812080548390811061284557612845615d58565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506129b15760e0810180516001600160a01b0390811660009081526005602052604080822054935190516302c68be360e31b815290831660048201529092909116906316345f1890602401602060405180830381865afa158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190615dd6565b905060008260600151836000015161297e9190615d2c565b90506000670de0b6b3a76400006129958385615ce0565b61299f9190615cf7565b90506129ab8188615d19565b96505050505b50806129bc81615d3f565b915050612813565b5050919050565b6001600160a01b03821660009081526003602052604081208054829190849081106129f8576129f8615d58565b906000526020600020906009020190506000816006015442612a1a9190615d2c565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e81576001600160a01b0383166000908152600460205260408120805483908110612a7957612a79615d58565b600091825260209091206002909102018054600182015491925090818710612ac357875461271090612aac908390615ce0565b612ab69190615cf7565b612ac09086615d19565b94505b50505080612ad090615d3f565b9050612a2f565b6000612ae1615387565b805490915060ff600160401b82041615906001600160401b0316600081158015612b085750825b90506000826001600160401b03166001148015612b245750303b155b905081158015612b32575080155b15612b505760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b7a57845460ff60401b1916600160401b1785555b612b826153b0565b600080546001600160a01b03191633908117825581526001602081815260408320805460ff1990811684179091557f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80548216841790557f62cf4150b20d3255eba0565c087b9107980561f805ca8d8f9daa6ef061b5102180548216841790557f07c745cf21e9841960aca585c508e8b656ab26f500f65e063e363f1e5431cb338054821684179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f3951584e4df0c05d84015a72c4987ad1375f6f18e35cb23b25e1962d5cdc88b68054909116909217909155600e905269021e19e0c9bab24000007f1bb03ff857d460e4be2e8598c7161d2f56c86cc4c1d1ef349cef03abd737fdc48190556012805491929091612cb4908490615d19565b90915550506201fa406009558315612d0657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526001602052604090205460ff16612d3c5760405162461bcd60e51b8152600401610ec390615d98565b612d5b7355d398326f99059ff775485246999027b31979553383615323565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526001602052604090205460ff16612dd85760405162461bcd60e51b8152600401610ec390615d98565b60115460009015612e23576000600d60006001601154612df89190615d2c565b81526020019081526020016000209050612e1f8460125483600101548460020154876153c0565b9150505b6040805160a081018252858152602080820186815260125483850190815260608085018781524260808701908152601180546000908152600d885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260118054906000612ed183615d3f565b919050555050505050565b3360009081526002602052604090205460ff16612f0b5760405162461bcd60e51b8152600401610ec390615d98565b612f1b868686868686424261252e565b505050505050565b33600090815260146020908152604080832084845290915290208054612f5b5760405162461bcd60e51b8152600401610ec390615e40565b60028101546001600160a01b03163314612fa85760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ec3565b805460165460009061271090612fbe9084615ce0565b612fc89190615cf7565b90506000612fd68284615d2c565b336000908152600e6020526040812080549293508392909190612ffa908490615d19565b9250508190555080601260008282546130139190615d19565b9091555050811561305a57604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601460209081526040808320898452825280832083815560018082018590556002820180546001600160a01b031916905560039091018490559383526019825280832089845290915281205460185490926130ba91615d2c565b905080821461317b576000601882815481106130d8576130d8615d58565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526018805491925082918590811061312457613124615d58565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b601880548061318c5761318c615e6b565b600082815260208082206002600019949094019384020180546001600160a01b031916815560010182905591909255338083526019825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b60608183111561324f5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610ec3565b60115482106132965760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610ec3565b60006132a28484615d2c565b6132ad906001615d19565b90506000816001600160401b038111156132c9576132c9615dc0565b60405190808252806020026020018201604052801561332c57816020015b6133196040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816132e75790505b50905060005b828110156133c357600d60006133488389615d19565b81526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508282815181106133a5576133a5615d58565b602002602001018190525080806133bb90615d3f565b915050613332565b50949350505050565b6133d46152d7565b600081116133f45760405162461bcd60e51b8152600401610ec390615e18565b60006013541161343d5760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610ec3565b600061344833611174565b9050808211156134935760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ec3565b6000612710601354846134a69190615ce0565b6134b09190615cf7565b336000908152600e60205260408120805492935085929091906134d4908490615d2c565b9250508190555082601260008282546134ed9190615d2c565b9091555050336000908152601b602052604081208054839290613511908490615d19565b9091555050600a805490600061352683615d3f565b9091555050336000908152601060209081526040918290208251608081018452600a54815291820184905260095490928201906135639042615d19565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506113b66001600080516020615e8283398151915255565b601a818154811061363657600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6136ad6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526001602052604090205460ff166137385760405162461bcd60e51b8152600401610ec390615d98565b61271081111561378a5760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610ec3565b601355565b6137976152d7565b3360009081526003602052604090205481106137ed5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ec3565b33600090815260036020526040812080548390811061380e5761380e615d58565b906000526020600020906009020190508060070160149054906101000a900460ff16156138705760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610ec3565b600061387c33846129cb565b905081600301548110156138c95760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ec3565b60008260030154826138db9190615d2c565b9050600081116138fd5760405162461bcd60e51b8152600401610ec390615d6e565b808360030160008282546139119190615d19565b909155505082546003840154106139385760078301805460ff60a01b1916600160a01b1790555b3360009081526006602052604090205415613a465760078301546001600160a01b039081166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156139b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dd9190615dd6565b6139e79190615ce0565b6139f19190615cf7565b336000908152600660205260409020549091508110613a1f5733600090815260066020526040812055613a44565b3360009081526006602052604081208054839290613a3e908490615d2c565b90915550505b505b6007838101546001600160a01b03166000908152602091909152604081208054839290613a74908490615d2c565b909155505033600090815260106020526040808220815160808101909252600b8054919383929190613aa583615d3f565b91905055815260200183815260200160095442613ac29190615d19565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600c905281208054839290613b45908490615d19565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506113b66001600080516020615e8283398151915255565b613bd4604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152601060205260408120905b81548110156113645783828281548110613c0a57613c0a615d58565b90600052602060002090600402016000015403613c8757818181548110613c3357613c33615d58565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610e88915050565b80613c9181615d3f565b915050613bee565b3360009081526001602052604090205460ff16613cc85760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b038316613d165760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610ec3565b600081118015613d2857506127108111155b613d695760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610ec3565b6001600160a01b0383166000908152600460205260408120613d8a91615550565b6000825b612710821015613e275782612710613da68285615d19565b1115613dbb57613db883612710615d2c565b90505b6001600160a01b0386166000908152600460209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613e138184615d19565b9250613e1f8583615d19565b915050613d8e565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613e946040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6011548210613ed75760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610ec3565b506000908152600d6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60036020528160005260406000208181548110613f4257600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260036020526040812080546060928392909185908110613fd557613fd5615d58565b600091825260208083206007600990930201918201546001600160a01b03168084526004909152604083205491935091816001600160401b0381111561401d5761401d615dc0565b604051908082528060200260200182016040528015614046578160200160208202803683370190505b5090506000826001600160401b0381111561406357614063615dc0565b60405190808252806020026020018201604052801561408c578160200160208202803683370190505b50905060005b83811015614139576001600160a01b03851660009081526004602052604081208054839081106140c4576140c4615d58565b90600052602060002090600202019050806000015487600601546140e89190615d19565b8483815181106140fa576140fa615d58565b602002602001018181525050806001015483838151811061411d5761411d615d58565b60209081029190910101525061413281615d3f565b9050614092565b5090955093505050505b9250929050565b60008060008061415985610cc0565b6001600160a01b0386166000908152600e6020526040902054909150614180908290615d2c565b6001600160a01b0386166000908152600e602052604090205490945090925090505b9193909250565b3360009081526001602052604090205460ff166141d85760405162461bcd60e51b8152600401610ec390615d98565b600855565b6001600160a01b0381166000908152601060209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127ed57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101614215565b6010602052816000526040600020818154811061428e57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526001602052604090205460ff166142f05760405162461bcd60e51b8152600401610ec390615d98565b600955565b60606001600160a01b03821661431d5760405162461bcd60e51b8152600401610ec390615def565b6000805b601a548110156143cd57836001600160a01b0316601a828154811061434857614348615d58565b60009182526020909120600460069092020101546001600160a01b031614806143a85750836001600160a01b0316601a828154811061438957614389615d58565b60009182526020909120600560069092020101546001600160a01b0316145b156143bb57816143b781615d3f565b9250505b806143c581615d3f565b915050614321565b508060000361440f576040805160008082526020820190925290614407565b6143f4615571565b8152602001906001900390816143ec5790505b509392505050565b6000816001600160401b0381111561442957614429615dc0565b60405190808252806020026020018201604052801561446257816020015b61444f615571565b8152602001906001900390816144475790505b5090506000805b601a548110156145ab57856001600160a01b0316601a828154811061449057614490615d58565b60009182526020909120600460069092020101546001600160a01b031614806144f05750856001600160a01b0316601a82815481106144d1576144d1615d58565b60009182526020909120600560069092020101546001600160a01b0316145b1561459957601a818154811061450857614508615d58565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152835184908490811061457f5761457f615d58565b6020026020010181905250818061459590615d3f565b9250505b806145a381615d3f565b915050614469565b5090949350505050565b601a5460609083106146095760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610ec3565b60006146158385615d19565b601a549091508111156146275750601a545b60006146338583615d2c565b6001600160401b0381111561464a5761464a615dc0565b60405190808252806020026020018201604052801561468357816020015b614670615571565b8152602001906001900390816146685790505b509050845b828110156133c357601a81815481106146a3576146a3615d58565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826147118884615d2c565b8151811061472157614721615d58565b6020026020010181905250808061473790615d3f565b915050614688565b6147476152d7565b33600090815260036020526040902054811061479d5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ec3565b3360009081526003602052604081208054839081106147be576147be615d58565b9060005260206000209060090201905060006147da3384610d56565b905081600401548110156148275760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ec3565b60008260040154826148399190615d2c565b90506000811161485b5760405162461bcd60e51b8152600401610ec390615d6e565b8083600401600082825461486f9190615d19565b90915550503360009081526010602052604090819020815160808101909252908061489d87620f4240615d19565b8152602001838152602001600954426148b69190615d19565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613b7e565b6001600160a01b0381166000908152600e6020908152604080832054600f909252822054601154606093849390929091839061499a908390615d2c565b9050806000036149cb5750506040805160008082526020820181815282840190935290955090935091506141a29050565b806001600160401b038111156149e3576149e3615dc0565b604051908082528060200260200182016040528015614a0c578160200160208202803683370190505b509550806001600160401b03811115614a2757614a27615dc0565b604051908082528060200260200182016040528015614a50578160200160208202803683370190505b50945060005b81811015614b2c576000614a6a8285615d19565b905080888381518110614a7f57614a7f615d58565b60209081029190910101528415614af8576000818152600d602052604081206003015461271090614ab09088615ce0565b614aba9190615cf7565b905080888481518110614acf57614acf615d58565b6020908102919091010152614ae48188615d19565b9650614af08187615d2c565b955050614b19565b6000878381518110614b0c57614b0c615d58565b6020026020010181815250505b5080614b2481615d3f565b915050614a56565b505050509193909250565b614b3f6152d7565b6001600160a01b038216600090815260146020908152604080832084845290915290208054614b805760405162461bcd60e51b8152600401610ec390615e40565b336001600160a01b03841603614bd15760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610ec3565b8054600182015460038301546000828411614bed576000614bf7565b614bf78385615d2c565b9050600084614c0883612710615ce0565b614c129190615cf7565b90506000612710614c238380615ce0565b614c2d9190615cf7565b90506000612710614c3e8389615ce0565b614c489190615cf7565b90506000614c568289615d2c565b9050614c787355d398326f99059ff775485246999027b3197955338d8a615459565b336000908152600e602052604081208054839290614c97908490615d19565b925050819055508060126000828254614cb09190615d19565b90915550506001600160a01b038b1660009081526017602052604081208054899290614cdd908490615d19565b92505081905550601a6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601960008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601880549050614e8c9190615d2c565b9050808214614f4d57600060188281548110614eaa57614eaa615d58565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260188054919250829185908110614ef657614ef6615d58565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b6018805480614f5e57614f5e615e6b565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601960008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051615021929190918252602082015260400190565b60405180910390a35050505050505050505050611b7c6001600080516020615e8283398151915255565b3360009081526002602052604090205460ff1661507a5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b0382166150a05760405162461bcd60e51b8152600401610ec390615def565b600081116150c05760405162461bcd60e51b8152600401610ec390615e18565b6001600160a01b0382166000908152600e602052604090205460125482916150e791615d2c565b6150f19190615d19565b6012556001600160a01b0382166000818152600e602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839906151419084815260200190565b60405180910390a25050565b336000908152601460209081526040808320858452909152902080546151855760405162461bcd60e51b8152600401610ec390615e40565b60028101546001600160a01b031633146151d25760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ec3565b600082116152175760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ec3565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b3360009081526001602052604090205460ff1661528d5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b0381166152b35760405162461bcd60e51b8152600401610ec390615def565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020615e8283398151915280546001190161530957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615e8283398151915255565b6040516001600160a01b0383811660248301526044820183905261538291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050615498565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e88565b6153b8615509565b61104d61552e565b60008215806153cd575084155b156153da57506000615450565b6000856153e988612710615ce0565b6153f39190615cf7565b905060008461540487612710615ce0565b61540e9190615cf7565b905080821161542257600092505050615450565b600061542e8284615d2c565b9050600061271061543f8784615ce0565b6154499190615cf7565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526154929186918216906323b872dd90608401615350565b50505050565b600080602060008451602086016000885af1806154bb576040513d6000823e3d81fd5b50506000513d915081156154d35780600114156154e0565b6001600160a01b0384163b155b1561549257604051635274afe760e01b81526001600160a01b0385166004820152602401610ec3565b615511615536565b61104d57604051631afcd79f60e31b815260040160405180910390fd5b61530f615509565b6000615540615387565b54600160401b900460ff16919050565b50805460008255600202906000526020600020908101906113b691906155b9565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156155d457600080825560018201556002016155ba565b5090565b80356001600160a01b03811681146155ef57600080fd5b919050565b60006020828403121561560657600080fd5b61560f826155d8565b9392505050565b6000806040838503121561562957600080fd5b615632836155d8565b946020939093013593505050565b60006020828403121561565257600080fd5b5035919050565b60008083601f84011261566b57600080fd5b5081356001600160401b0381111561568257600080fd5b6020830191508360208260051b850101111561414357600080fd5b600080602083850312156156b057600080fd5b82356001600160401b038111156156c657600080fd5b6156d285828601615659565b90969095509350505050565b600081518084526020808501945080840160005b8381101561570e578151875295820195908201906001016156f2565b509495945050505050565b60608152600061572c60608301866156de565b828103602084015261573e81866156de565b915050826040830152949350505050565b6000806000806040858703121561576557600080fd5b84356001600160401b038082111561577c57600080fd5b61578888838901615659565b909650945060208701359150808211156157a157600080fd5b506157ae87828801615659565b95989497509550505050565b600080604083850312156157cd57600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b8381101561581f5781516001600160a01b0316855293820193908201906001016157fa565b50508583038187015261583283896156de565b868103604088015287518082528289019450908201925060005b818110156158965761588684865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b938201939285019260010161584c565b50919998505050505050505050565b600080604083850312156158b857600080fd5b6158c1836155d8565b91506158cf602084016155d8565b90509250929050565b600080600080600080600080610100898b0312156158f557600080fd5b6158fe896155d8565b975060208901359650604089013595506060890135945061592160808a016155d8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b828110156159e45781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b0316908601526101008082015115159086015261012090810151908501526101409093019290850190600101615960565b5091979650505050505050565b600080600060608486031215615a0657600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215615a3657600080fd5b615a3f876155d8565b9550602087013594506040870135935060608701359250615a62608088016155d8565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015615ae257615acf83855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a09290920191600101615a91565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610e88565b8151815260208083015190820152604080830151908201526060808301516001600160a01b03169082015260808101610e88565b600080600060608486031215615b6b57600080fd5b615b74846155d8565b95602085013595506040909401359392505050565b60a08101610e88828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615bd560408301856156de565b828103602084015261545081856156de565b6020808252825182820181905260009190848201906040850190845b81811015615ae257615c3d8385518051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b9284019260809290920191600101615c03565b602080825282518282018190526000919060409081850190868401855b828110156159e45781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615c6d565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e8857610e88615cca565b600082615d1457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e8857610e88615cca565b81810381811115610e8857610e88615cca565b600060018201615d5157615d51615cca565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615de857600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212209e2c35730640e3792fe9e8caaea8925f43fcc20fc156e4b72a5520efdd46084f64736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104535760003560e01c80638129fc1c11610241578063c26766031161013b578063d9193025116100c3578063ef5d9ae811610087578063ef5d9ae814610c5e578063f109208f14610c7e578063f2bb563014610c91578063fe2f50d014610ca4578063ffecf51614610cad57600080fd5b8063d919302514610bfc578063da1b436414610c0f578063e88f8e6614610c2f578063eacdc5ff14610c42578063eb44e0a314610c4b57600080fd5b8063c7b530b01161010a578063c7b530b014610b5a578063cc573a9114610b7a578063ce13d09014610bb6578063ce3432c314610bc9578063cfcf331914610be957600080fd5b8063c267660314610aac578063c32d3ae214610ab4578063c36d03fd14610ae2578063c6b61e4c14610af557600080fd5b80639cb6f556116101c9578063b6c3dc4c1161018d578063b6c3dc4c146109d0578063b92a349f146109f0578063bc0bc6ba14610a03578063bd84477d14610a23578063bed9757e14610a8b57600080fd5b80639cb6f5561461092b5780639f3a676c1461093e578063a0d467581461098a578063aaf4b04d146109aa578063ac97b417146109bd57600080fd5b80638da5cb5b116102105780638da5cb5b146108b25780638f82818f146108c55780639437e32e146108e5578063953d16bf146108f857806396fd111a1461090b57600080fd5b80638129fc1c14610864578063853e0df21461086c57806387b4b1051461087f5780638851ec0f1461089f57600080fd5b806343a32f891161035257806361d1080b116102da57806374d1c8e31161029e57806374d1c8e3146107e25780637a0c6dc0146107f55780637bc221ac146108155780637e6d99261461082857806380ca0ecf1461085157600080fd5b806361d1080b1461079457806362cd6a091461079c57806367a74ddc146107b35780636ef569a5146107c65780637065cb48146107cf57600080fd5b806351e624721161032157806351e624721461071357806351f6cf2f14610726578063549e61d31461074e5780635811622714610761578063592d1dd11461077457600080fd5b806343a32f891461064057806343c7c011146106bb578063441a4175146106ce57806348ea286d1461070057600080fd5b8063173825d9116103e05780632ded58aa116103a45780632ded58aa146105b65780632e46fed8146105bf5780633ba8396e146105e85780633c92f98d1461060b5780633f35e7221461062d57600080fd5b8063173825d9146105615780631ada70a8146105745780631aefa2d11461057d5780631eb9e53e1461059057806325d5971f146105a357600080fd5b8063092c761011610427578063092c7610146104fb5780630a84096a1461051b5780630a910a6d1461052e5780630c7d63861461053757806313baee5b1461054157600080fd5b8062159da614610458578063013745181461047e578063022914a7146104bf5780630519da32146104f2575b600080fd5b61046b6104663660046155f4565b610cc0565b6040519081526020015b60405180910390f35b6104a761048c3660046155f4565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610475565b6104e26104cd3660046155f4565b60016020526000908152604090205460ff1681565b6040519015158152602001610475565b61046b60095481565b61046b6105093660046155f4565b60076020526000908152604090205481565b61046b610529366004615616565b610d56565b61046b60135481565b61053f610e8e565b005b61046b61054f3660046155f4565b600e6020526000908152604090205481565b61053f61056f3660046155f4565b61104f565b61046b60085481565b61053f61058b366004615640565b611140565b61046b61059e3660046155f4565b611174565b61053f6105b1366004615640565b6111ab565b61046b60125481565b61046b6105cd3660046155f4565b6001600160a01b03166000908152601b602052604090205490565b6104e26105f63660046155f4565b60026020526000908152604090205460ff1681565b61061e61061936600461569d565b6113b9565b60405161047593929190615719565b61053f61063b366004615616565b6115a7565b61068c61064e366004615616565b60146020908152600092835260408084209091529082529020805460018201546002830154600390930154919290916001600160a01b039091169084565b604051610475949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61053f6106c93660046155f4565b61162e565b6106e16106dc366004615640565b6119b4565b604080516001600160a01b039093168352602083019190915201610475565b61053f61070e3660046155f4565b6119ec565b61053f610721366004615640565b611b80565b610739610734366004615616565b611bb4565b60408051928352602083019190915201610475565b61053f61075c36600461574f565b611bf0565b61053f61076f3660046157ba565b611eb9565b61046b6107823660046155f4565b60066020526000908152604090205481565b601a5461046b565b6107a46121a9565b604051610475939291906157dc565b61053f6107c13660046158a5565b6123fc565b61046b60165481565b61053f6107dd3660046155f4565b612459565b61053f6107f03660046158d8565b61252e565b6108086108033660046155f4565b612711565b6040516104759190615943565b61046b6108233660046155f4565b6127f8565b61046b6108363660046155f4565b6001600160a01b031660009081526017602052604090205490565b61046b61085f366004615616565b6129cb565b61053f612ad7565b61053f61087a366004615640565b612d0d565b61046b61088d3660046155f4565b600c6020526000908152604090205481565b61053f6108ad3660046159f1565b612da9565b6000546104a7906001600160a01b031681565b61046b6108d33660046155f4565b60176020526000908152604090205481565b61053f6108f3366004615a1d565b612edc565b61053f610906366004615640565b612f23565b61091e6109193660046157ba565b61320d565b6040516104759190615a75565b61053f610939366004615640565b6133cc565b61095161094c366004615640565b613626565b6040805196875260208701959095529385019290925260608401526001600160a01b0390811660808401521660a082015260c001610475565b61099d610998366004615616565b613679565b6040516104759190615aee565b61053f6109b8366004615640565b613709565b61053f6109cb366004615640565b61378f565b6109e36109de366004615616565b613ba0565b6040516104759190615b22565b61053f6109fe366004615b56565b613c99565b610a16610a11366004615640565b613e62565b6040516104759190615b89565b610a36610a31366004615616565b613f26565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c08501526001600160a01b031660e0840152151561010083015261012082015261014001610475565b610a9e610a99366004615616565b613fa4565b604051610475929190615bc2565b6103e761046b565b610ac7610ac23660046155f4565b61414a565b60408051938452602084019290925290820152606001610475565b61053f610af0366004615640565b6141a9565b610b32610b03366004615640565b600d60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a001610475565b610b6d610b683660046155f4565b6141dd565b6040516104759190615be7565b610b8d610b88366004615616565b614272565b604080519485526020850193909352918301526001600160a01b03166060820152608001610475565b61053f610bc4366004615640565b6142c1565b610bdc610bd73660046155f4565b6142f5565b6040516104759190615c50565b610bdc610bf73660046157ba565b6145b5565b61053f610c0a366004615640565b61473f565b61046b610c1d3660046155f4565b600f6020526000908152604090205481565b61061e610c3d3660046155f4565b61495d565b61046b60115481565b61053f610c59366004615616565b614b37565b61046b610c6c3660046155f4565b601b6020526000908152604090205481565b61053f610c8c366004615616565b61504b565b61053f610c9f3660046157ba565b61514d565b61046b60155481565b61053f610cbb3660046155f4565b61525e565b6001600160a01b0381166000908152600e6020908152604080832054600f909252822054805b601154811015610d4e578215610d3c576000818152600d602052604081206003015461271090610d169086615ce0565b610d209190615cf7565b9050610d2c8186615d19565b9450610d388185615d2c565b9350505b80610d4681615d3f565b915050610ce6565b505050919050565b6001600160a01b0382166000908152600360205260408120805482919084908110610d8357610d83615d58565b906000526020600020906009020190506000816006015442610da59190615d2c565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e81576001600160a01b0383166000908152600460205260408120805483908110610e0457610e04615d58565b6000918252602082206002909102018054600182015460088a015492945090929091606490610e3590600a90615ce0565b610e3f9190615cf7565b9050828810610e6c57612710610e558383615ce0565b610e5f9190615cf7565b610e699087615d19565b95505b5050505080610e7a90615d3f565b9050610dba565b5093505050505b92915050565b610e966152d7565b6000610ea133610cc0565b905060008111610ecc5760405162461bcd60e51b8152600401610ec390615d6e565b60405180910390fd5b336000908152600e602052604081208054839290610eeb908490615d2c565b925050819055508060126000828254610f049190615d2c565b9091555050601154336000908152600f6020908152604080832093909355601b90529081208054839290610f39908490615d19565b9091555050600a8054906000610f4e83615d3f565b9091555050336000908152601060209081526040918290208251608081018452600a5481529182018490526009549092820190610f8b9042615d19565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a25061104d6001600080516020615e8283398151915255565b565b3360009081526001602052604090205460ff1661107e5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b03811660009081526001602052604090205460ff166110d25760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b6044820152606401610ec3565b336001600160a01b0382160361111f5760405162461bcd60e51b815260206004820152601260248201527121b0b73737ba103932b6b7bb329039b2b63360711b6044820152606401610ec3565b6001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460ff1661116f5760405162461bcd60e51b8152600401610ec390615d98565b601655565b6001600160a01b0381166000908152600e60205260408120548161119784610cc0565b90506111a38183615d2c565b949350505050565b6111b36152d7565b33600090815260106020526040902080546112065760405162461bcd60e51b81526020600482015260136024820152724e6f207374616b657320617661696c61626c6560681b6044820152606401610ec3565b60005b815481101561136457600082828154811061122657611226615d58565b9060005260206000209060040201905083816000015414801561124d575060008160010154115b156113515780600201544210156112955760405162461bcd60e51b815260206004820152600c60248201526b14dd185ad9481b1bd8dad95960a21b6044820152606401610ec3565b60018101805460038301546000909255906001600160a01b03167355d398326f99059ff775485246999027b319795581146112f8576001600160a01b0381166000908152600c6020526040812080548492906112f2908490615d2c565b90915550505b61130c6001600160a01b0382163384615323565b604080518381526020810188905233917f933735aa8de6d7547d0126171b2f31b9c34dd00f3ecd4be85a0ba047db4fafef910160405180910390a2505050505061139f565b508061135c81615d3f565b915050611209565b5060405162461bcd60e51b815260206004820152600f60248201526e14dd185ad9481b9bdd08199bdd5b99608a1b6044820152606401610ec3565b6113b66001600080516020615e8283398151915255565b50565b606080600083806001600160401b038111156113d7576113d7615dc0565b604051908082528060200260200182016040528015611400578160200160208202803683370190505b509350806001600160401b0381111561141b5761141b615dc0565b604051908082528060200260200182016040528015611444578160200160208202803683370190505b50925060005b8181101561159e57600087878381811061146657611466615d58565b905060200201602081019061147b91906155f4565b6001600160a01b03811660009081526007602052604090205487519192509081908890859081106114ae576114ae615d58565b6020908102919091018101919091526001600160a01b038381166000818152600590935260408084205490516302c68be360e31b81526004810192909252909116906316345f1890602401602060405180830381865afa158015611516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153a9190615dd6565b90506000670de0b6b3a76400006115518484615ce0565b61155b9190615cf7565b90508088868151811061157057611570615d58565b60209081029190910101526115858188615d19565b965050505050808061159690615d3f565b91505061144a565b50509250925092565b3360009081526001602052604090205460ff166115d65760405162461bcd60e51b8152600401610ec390615d98565b6115ea6001600160a01b0383163383615323565b6040518181526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a35050565b6116366152d7565b6000805b336000908152600360205260409020548110156117415733600090815260036020526040812080548390811061167257611672615d58565b6000918252602090912060099091020160078101549091506001600160a01b0385811691161480156116b057506007810154600160a01b900460ff16155b1561172e5760006116c133846129cb565b9050816003015481111561172c5760008260030154826116e19190615d2c565b90506116ed8186615d19565b9450808360030160008282546117039190615d19565b9091555050825460038401541061172a5760078301805460ff60a01b1916600160a01b1790555b505b505b508061173981615d3f565b91505061163a565b50600081116117625760405162461bcd60e51b8152600401610ec390615d6e565b336000908152600660205260409020541561186b576001600160a01b038281166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156117de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118029190615dd6565b61180c9190615ce0565b6118169190615cf7565b3360009081526006602052604090205490915081106118445733600090815260066020526040812055611869565b3360009081526006602052604081208054839290611863908490615d2c565b90915550505b505b6001600160a01b03821660009081526007602052604081208054839290611893908490615d2c565b909155505033600090815260106020526040808220815160808101909252600b80549193839291906118c483615d3f565b919050558152602001838152602001600954426118e19190615d19565b81526001600160a01b0385811660209283018190528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b03191691909316179091558352600c90528120805483929061195c908490615d19565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b51721910160405180910390a2506113b66001600080516020615e8283398151915255565b601881815481106119c457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b3360009081526002602052604090205460ff16611a1b5760405162461bcd60e51b8152600401610ec390615d98565b60005b6001600160a01b038216600090815260036020526040902054811015611b7c576001600160a01b0382166000908152600360205260408120805483908110611a6857611a68615d58565b906000526020600020906009020190508060070160149054906101000a900460ff16611b405760088101546001600160a01b03841660009081526006602052604090205410611ae45760088101546001600160a01b03841660009081526006602052604081208054909190611ade908490615d2c565b90915550505b80546007808301546001600160a01b03166000908152602091909152604090205410611b405780546007808301546001600160a01b03166000908152602091909152604081208054909190611b3a908490615d2c565b90915550505b600080825560018201819055600382018190556004820155600701805460ff60a01b1916600160a01b179055611b7581615d3f565b9050611a1e565b5050565b3360009081526001602052604090205460ff16611baf5760405162461bcd60e51b8152600401610ec390615d98565b601555565b60046020528160005260406000208181548110611bd057600080fd5b600091825260209091206002909102018054600190910154909250905082565b3360009081526002602052604090205460ff16611c1f5760405162461bcd60e51b8152600401610ec390615d98565b828114611c665760405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606401610ec3565b82611ca25760405162461bcd60e51b815260206004820152600c60248201526b456d7074792061727261797360a01b6044820152606401610ec3565b6000805b84811015611e9a576000868683818110611cc257611cc2615d58565b9050602002016020810190611cd791906155f4565b6001600160a01b031603611cfd5760405162461bcd60e51b8152600401610ec390615def565b6000848483818110611d1157611d11615d58565b9050602002013511611d355760405162461bcd60e51b8152600401610ec390615e18565b838382818110611d4757611d47615d58565b90506020020135600e6000888885818110611d6457611d64615d58565b9050602002016020810190611d7991906155f4565b6001600160a01b03168152602081019190915260400160002054611d9d9084615d2c565b611da79190615d19565b9150838382818110611dbb57611dbb615d58565b90506020020135600e6000888885818110611dd857611dd8615d58565b9050602002016020810190611ded91906155f4565b6001600160a01b03168152602081019190915260400160002055858582818110611e1957611e19615d58565b9050602002016020810190611e2e91906155f4565b6001600160a01b03167fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839858584818110611e6a57611e6a615d58565b90506020020135604051611e8091815260200190565b60405180910390a280611e9281615d3f565b915050611ca6565b508060126000828254611ead9190615d19565b90915550505050505050565b611ec16152d7565b60008211611f015760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642076616c756560981b6044820152606401610ec3565b60008111611f465760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ec3565b601554821015611f8e5760405162461bcd60e51b815260206004820152601360248201527256616c75652062656c6f77206d696e696d756d60681b6044820152606401610ec3565b6000611f9933611174565b905080831115611fe45760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ec3565b600a8054906000611ff483615d3f565b9091555050600a54336000908152600e60205260408120805486929061201b908490615d2c565b9250508190555083601260008282546120349190615d2c565b909155505060408051608081018252858152602080820186815233838501818152426060860190815260008381526014865287812089825286528781209651875593516001808801919091559151600280880180546001600160a01b039384166001600160a01b03199182161790915592516003909801979097558751808901909852928752938601878152601880548084018255948190529651939095027fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e81018054949093169390941692909217905591517fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2f9091015590546121399190615d2c565b33600081815260196020908152604080832086845282529182902093909355805186815292830184905290917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a25050611b7c6001600080516020615e8283398151915255565b60185460609081908190806001600160401b038111156121cb576121cb615dc0565b6040519080825280602002602001820160405280156121f4578160200160208202803683370190505b509350806001600160401b0381111561220f5761220f615dc0565b604051908082528060200260200182016040528015612238578160200160208202803683370190505b509250806001600160401b0381111561225357612253615dc0565b6040519080825280602002602001820160405280156122b857816020015b6122a56040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b8152602001906001900390816122715790505b50915060005b818110156123f5576000601882815481106122db576122db615d58565b60009182526020918290206040805180820190915260029092020180546001600160a01b031680835260019091015492820192909252875190925087908490811061232857612328615d58565b60200260200101906001600160a01b031690816001600160a01b031681525050806020015185838151811061235f5761235f615d58565b60209081029190910181019190915281516001600160a01b03908116600090815260148352604080822085850151835284529081902081516080810183528154815260018201549481019490945260028101549092169083015260030154606082015284518590849081106123d6576123d6615d58565b60200260200101819052505080806123ed90615d3f565b9150506122be565b5050909192565b3360009081526001602052604090205460ff1661242b5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b03918216600090815260056020526040902080546001600160a01b03191691909216179055565b3360009081526001602052604090205460ff166124885760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b0381166124ae5760405162461bcd60e51b8152600401610ec390615def565b6001600160a01b03811660009081526001602052604090205460ff16156125075760405162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9037bbb732b960991b6044820152606401610ec3565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526002602052604090205460ff1661255d5760405162461bcd60e51b8152600401610ec390615d98565b60036000896001600160a01b03166001600160a01b031681526020019081526020016000206040518061014001604052808981526020018881526020018781526020016000815260200160008152602001848152602001838152602001866001600160a01b03168152602001600015158152602001858152509080600181540180825580915050600190039060005260206000209060090201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506101008201518160070160146101000a81548160ff0219169083151502179055506101208201518160080155505082600660008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126d59190615d19565b90915550506001600160a01b03841660009081526007602052604081208054899290612702908490615d19565b90915550505050505050505050565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127ed57600084815260209081902060408051610140810182526009860290920180548352600180820154848601526002820154928401929092526003810154606084015260048101546080840152600581015460a0840152600681015460c084015260078101546001600160a01b03811660e0850152600160a01b900460ff161515610100840152600801546101208301529083529092019101612749565b505050509050919050565b6001600160a01b038116600090815260036020526040812054815b818110156129c4576001600160a01b038416600090815260036020526040812080548390811061284557612845615d58565b600091825260209182902060408051610140810182526009909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546080820152600582015460a0820152600682015460c082015260078201546001600160a01b03811660e083015260ff600160a01b909104161515610100820181905260089092015461012082015291506129b15760e0810180516001600160a01b0390811660009081526005602052604080822054935190516302c68be360e31b815290831660048201529092909116906316345f1890602401602060405180830381865afa158015612942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129669190615dd6565b905060008260600151836000015161297e9190615d2c565b90506000670de0b6b3a76400006129958385615ce0565b61299f9190615cf7565b90506129ab8188615d19565b96505050505b50806129bc81615d3f565b915050612813565b5050919050565b6001600160a01b03821660009081526003602052604081208054829190849081106129f8576129f8615d58565b906000526020600020906009020190506000816006015442612a1a9190615d2c565b60078301549091506001600160a01b03166000805b6001600160a01b038316600090815260046020526040902054811015610e81576001600160a01b0383166000908152600460205260408120805483908110612a7957612a79615d58565b600091825260209091206002909102018054600182015491925090818710612ac357875461271090612aac908390615ce0565b612ab69190615cf7565b612ac09086615d19565b94505b50505080612ad090615d3f565b9050612a2f565b6000612ae1615387565b805490915060ff600160401b82041615906001600160401b0316600081158015612b085750825b90506000826001600160401b03166001148015612b245750303b155b905081158015612b32575080155b15612b505760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612b7a57845460ff60401b1916600160401b1785555b612b826153b0565b600080546001600160a01b03191633908117825581526001602081815260408320805460ff1990811684179091557f968a1791ad31618c63b086103baa804af57c3ca0efa33a191010fbb7741579fc80548216841790557f62cf4150b20d3255eba0565c087b9107980561f805ca8d8f9daa6ef061b5102180548216841790557f07c745cf21e9841960aca585c508e8b656ab26f500f65e063e363f1e5431cb338054821684179055738a9281ecece9b599c2f42d829c3d0d8e74b7083e84527f3951584e4df0c05d84015a72c4987ad1375f6f18e35cb23b25e1962d5cdc88b68054909116909217909155600e905269021e19e0c9bab24000007f1bb03ff857d460e4be2e8598c7161d2f56c86cc4c1d1ef349cef03abd737fdc48190556012805491929091612cb4908490615d19565b90915550506201fa406009558315612d0657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b3360009081526001602052604090205460ff16612d3c5760405162461bcd60e51b8152600401610ec390615d98565b612d5b7355d398326f99059ff775485246999027b31979553383615323565b6040518181527355d398326f99059ff775485246999027b31979559033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350565b3360009081526001602052604090205460ff16612dd85760405162461bcd60e51b8152600401610ec390615d98565b60115460009015612e23576000600d60006001601154612df89190615d2c565b81526020019081526020016000209050612e1f8460125483600101548460020154876153c0565b9150505b6040805160a081018252858152602080820186815260125483850190815260608085018781524260808701908152601180546000908152600d885289902097518855945160018801559251600287015551600386015590516004909401939093555483518781529182018590529281018590527feadbedb993dfca23e4c79bf4fa5fe531c2e0e926258fabb8445e8bc5c472780f910160405180910390a260118054906000612ed183615d3f565b919050555050505050565b3360009081526002602052604090205460ff16612f0b5760405162461bcd60e51b8152600401610ec390615d98565b612f1b868686868686424261252e565b505050505050565b33600090815260146020908152604080832084845290915290208054612f5b5760405162461bcd60e51b8152600401610ec390615e40565b60028101546001600160a01b03163314612fa85760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ec3565b805460165460009061271090612fbe9084615ce0565b612fc89190615cf7565b90506000612fd68284615d2c565b336000908152600e6020526040812080549293508392909190612ffa908490615d19565b9250508190555080601260008282546130139190615d19565b9091555050811561305a57604080518381526020810187905233917f4725a4d4de9bff212d0885095e27515072f73f427df55e52f37f241321ef88f9910160405180910390a25b336000818152601460209081526040808320898452825280832083815560018082018590556002820180546001600160a01b031916905560039091018490559383526019825280832089845290915281205460185490926130ba91615d2c565b905080821461317b576000601882815481106130d8576130d8615d58565b60009182526020918290206040805180820190915260029092020180546001600160a01b0316825260010154918101919091526018805491925082918590811061312457613124615d58565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b601880548061318c5761318c615e6b565b600082815260208082206002600019949094019384020180546001600160a01b031916815560010182905591909255338083526019825260408084208b855283528084209390935591518981527f73d12dec3eb3b445b6c9feb2fd559ba7c852c525bc1e59d8f7ff760c55df041d910160405180910390a250505050505050565b60608183111561324f5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606401610ec3565b60115482106132965760405162461bcd60e51b8152602060048201526013602482015272115b9908195c1bd8da081b9bdd08199bdd5b99606a1b6044820152606401610ec3565b60006132a28484615d2c565b6132ad906001615d19565b90506000816001600160401b038111156132c9576132c9615dc0565b60405190808252806020026020018201604052801561332c57816020015b6133196040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816132e75790505b50905060005b828110156133c357600d60006133488389615d19565b81526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508282815181106133a5576133a5615d58565b602002602001018190525080806133bb90615d3f565b915050613332565b50949350505050565b6133d46152d7565b600081116133f45760405162461bcd60e51b8152600401610ec390615e18565b60006013541161343d5760405162461bcd60e51b81526020600482015260146024820152734275796f7574206e6f7420617661696c61626c6560601b6044820152606401610ec3565b600061344833611174565b9050808211156134935760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206e6574207374616b6560501b6044820152606401610ec3565b6000612710601354846134a69190615ce0565b6134b09190615cf7565b336000908152600e60205260408120805492935085929091906134d4908490615d2c565b9250508190555082601260008282546134ed9190615d2c565b9091555050336000908152601b602052604081208054839290613511908490615d19565b9091555050600a805490600061352683615d3f565b9091555050336000908152601060209081526040918290208251608081018452600a54815291820184905260095490928201906135639042615d19565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917fa65a8b4f7f65a1063243d7f7e9e4da00ff767599acf21549ef2548a45d1695ae910160405180910390a250506113b66001600080516020615e8283398151915255565b601a818154811061363657600080fd5b6000918252602090912060069091020180546001820154600283015460038401546004850154600590950154939550919390926001600160a01b03918216911686565b6136ad6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b506001600160a01b03918216600090815260146020908152604080832093835292815290829020825160808101845281548152600182015492810192909252600281015490931691810191909152600390910154606082015290565b3360009081526001602052604090205460ff166137385760405162461bcd60e51b8152600401610ec390615d98565b61271081111561378a5760405162461bcd60e51b815260206004820152601d60248201527f50657263656e746167652063616e6e6f742065786365656420313030250000006044820152606401610ec3565b601355565b6137976152d7565b3360009081526003602052604090205481106137ed5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ec3565b33600090815260036020526040812080548390811061380e5761380e615d58565b906000526020600020906009020190508060070160149054906101000a900460ff16156138705760405162461bcd60e51b815260206004820152601060248201526f56657374696e6720636f6d706c65746560801b6044820152606401610ec3565b600061387c33846129cb565b905081600301548110156138c95760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ec3565b60008260030154826138db9190615d2c565b9050600081116138fd5760405162461bcd60e51b8152600401610ec390615d6e565b808360030160008282546139119190615d19565b909155505082546003840154106139385760078301805460ff60a01b1916600160a01b1790555b3360009081526006602052604090205415613a465760078301546001600160a01b039081166000818152600560205260408082205490516302c68be360e31b815260048101939093529092670de0b6b3a7640000928592909116906316345f1890602401602060405180830381865afa1580156139b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dd9190615dd6565b6139e79190615ce0565b6139f19190615cf7565b336000908152600660205260409020549091508110613a1f5733600090815260066020526040812055613a44565b3360009081526006602052604081208054839290613a3e908490615d2c565b90915550505b505b6007838101546001600160a01b03166000908152602091909152604081208054839290613a74908490615d2c565b909155505033600090815260106020526040808220815160808101909252600b8054919383929190613aa583615d3f565b91905055815260200183815260200160095442613ac29190615d19565b81526007860180546001600160a01b039081166020938401528454600180820187556000968752848720865160049093020191825585850151908201556040808601516002830155606090950151600390910180546001600160a01b0319169183169190911790559054168352600c905281208054839290613b45908490615d19565b9091555050604080518281526000602082015233917f4a94c2c356e29a6583071e731bdacf2ca56565ba5efebcff6936eb7923b5172191015b60405180910390a25050506113b66001600080516020615e8283398151915255565b613bd4604051806080016040528060008152602001600081526020016000815260200160006001600160a01b031681525090565b6001600160a01b0383166000908152601060205260408120905b81548110156113645783828281548110613c0a57613c0a615d58565b90600052602060002090600402016000015403613c8757818181548110613c3357613c33615d58565b6000918252602091829020604080516080810182526004909302909101805483526001810154938301939093526002830154908201526003909101546001600160a01b031660608201529250610e88915050565b80613c9181615d3f565b915050613bee565b3360009081526001602052604090205460ff16613cc85760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b038316613d165760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606401610ec3565b600081118015613d2857506127108111155b613d695760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b6044820152606401610ec3565b6001600160a01b0383166000908152600460205260408120613d8a91615550565b6000825b612710821015613e275782612710613da68285615d19565b1115613dbb57613db883612710615d2c565b90505b6001600160a01b0386166000908152600460209081526040808320815180830190925285825281830185815281546001818101845592865293909420915160029093029091019182559151910155613e138184615d19565b9250613e1f8583615d19565b915050613d8e565b6040516001600160a01b038616907fde4b6ccc38b84f88129403b65a309f9b1c41d4c316bc2118d7614e449b9d4c4590600090a25050505050565b613e946040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6011548210613ed75760405162461bcd60e51b815260206004820152600f60248201526e115c1bd8da081b9bdd08199bdd5b99608a1b6044820152606401610ec3565b506000908152600d6020908152604091829020825160a0810184528154815260018201549281019290925260028101549282019290925260038201546060820152600490910154608082015290565b60036020528160005260406000208181548110613f4257600080fd5b6000918252602090912060099091020180546001820154600283015460038401546004850154600586015460068701546007880154600890980154969950949750929591949093916001600160a01b03811691600160a01b90910460ff16908a565b6001600160a01b038216600090815260036020526040812080546060928392909185908110613fd557613fd5615d58565b600091825260208083206007600990930201918201546001600160a01b03168084526004909152604083205491935091816001600160401b0381111561401d5761401d615dc0565b604051908082528060200260200182016040528015614046578160200160208202803683370190505b5090506000826001600160401b0381111561406357614063615dc0565b60405190808252806020026020018201604052801561408c578160200160208202803683370190505b50905060005b83811015614139576001600160a01b03851660009081526004602052604081208054839081106140c4576140c4615d58565b90600052602060002090600202019050806000015487600601546140e89190615d19565b8483815181106140fa576140fa615d58565b602002602001018181525050806001015483838151811061411d5761411d615d58565b60209081029190910101525061413281615d3f565b9050614092565b5090955093505050505b9250929050565b60008060008061415985610cc0565b6001600160a01b0386166000908152600e6020526040902054909150614180908290615d2c565b6001600160a01b0386166000908152600e602052604090205490945090925090505b9193909250565b3360009081526001602052604090205460ff166141d85760405162461bcd60e51b8152600401610ec390615d98565b600855565b6001600160a01b0381166000908152601060209081526040808320805482518185028101850190935280835260609492939192909184015b828210156127ed57600084815260209081902060408051608081018252600486029092018054835260018082015484860152600282015492840192909252600301546001600160a01b031660608301529083529092019101614215565b6010602052816000526040600020818154811061428e57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015491945092506001600160a01b031684565b3360009081526001602052604090205460ff166142f05760405162461bcd60e51b8152600401610ec390615d98565b600955565b60606001600160a01b03821661431d5760405162461bcd60e51b8152600401610ec390615def565b6000805b601a548110156143cd57836001600160a01b0316601a828154811061434857614348615d58565b60009182526020909120600460069092020101546001600160a01b031614806143a85750836001600160a01b0316601a828154811061438957614389615d58565b60009182526020909120600560069092020101546001600160a01b0316145b156143bb57816143b781615d3f565b9250505b806143c581615d3f565b915050614321565b508060000361440f576040805160008082526020820190925290614407565b6143f4615571565b8152602001906001900390816143ec5790505b509392505050565b6000816001600160401b0381111561442957614429615dc0565b60405190808252806020026020018201604052801561446257816020015b61444f615571565b8152602001906001900390816144475790505b5090506000805b601a548110156145ab57856001600160a01b0316601a828154811061449057614490615d58565b60009182526020909120600460069092020101546001600160a01b031614806144f05750856001600160a01b0316601a82815481106144d1576144d1615d58565b60009182526020909120600560069092020101546001600160a01b0316145b1561459957601a818154811061450857614508615d58565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152835184908490811061457f5761457f615d58565b6020026020010181905250818061459590615d3f565b9250505b806145a381615d3f565b915050614469565b5090949350505050565b601a5460609083106146095760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606401610ec3565b60006146158385615d19565b601a549091508111156146275750601a545b60006146338583615d2c565b6001600160401b0381111561464a5761464a615dc0565b60405190808252806020026020018201604052801561468357816020015b614670615571565b8152602001906001900390816146685790505b509050845b828110156133c357601a81815481106146a3576146a3615d58565b60009182526020918290206040805160c0810182526006909302909101805483526001810154938301939093526002830154908201526003820154606082015260048201546001600160a01b03908116608083015260059092015490911660a0820152826147118884615d2c565b8151811061472157614721615d58565b6020026020010181905250808061473790615d3f565b915050614688565b6147476152d7565b33600090815260036020526040902054811061479d5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840eccae6e8d2dcce40d2dcc8caf605b1b6044820152606401610ec3565b3360009081526003602052604081208054839081106147be576147be615d58565b9060005260206000209060090201905060006147da3384610d56565b905081600401548110156148275760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a590818db185a5b48185b5bdd5b9d60621b6044820152606401610ec3565b60008260040154826148399190615d2c565b90506000811161485b5760405162461bcd60e51b8152600401610ec390615d6e565b8083600401600082825461486f9190615d19565b90915550503360009081526010602052604090819020815160808101909252908061489d87620f4240615d19565b8152602001838152602001600954426148b69190615d19565b81527355d398326f99059ff775485246999027b3197955602091820152825460018082018555600094855293829020835160049092020190815582820151938101939093556040808301516002850155606090920151600390930180546001600160a01b0319166001600160a01b03909416939093179092555182815233917f4e69fdc49495bcab2b4375781457ba16653a90eb4ffb6588351bdc39071433e29101613b7e565b6001600160a01b0381166000908152600e6020908152604080832054600f909252822054601154606093849390929091839061499a908390615d2c565b9050806000036149cb5750506040805160008082526020820181815282840190935290955090935091506141a29050565b806001600160401b038111156149e3576149e3615dc0565b604051908082528060200260200182016040528015614a0c578160200160208202803683370190505b509550806001600160401b03811115614a2757614a27615dc0565b604051908082528060200260200182016040528015614a50578160200160208202803683370190505b50945060005b81811015614b2c576000614a6a8285615d19565b905080888381518110614a7f57614a7f615d58565b60209081029190910101528415614af8576000818152600d602052604081206003015461271090614ab09088615ce0565b614aba9190615cf7565b905080888481518110614acf57614acf615d58565b6020908102919091010152614ae48188615d19565b9650614af08187615d2c565b955050614b19565b6000878381518110614b0c57614b0c615d58565b6020026020010181815250505b5080614b2481615d3f565b915050614a56565b505050509193909250565b614b3f6152d7565b6001600160a01b038216600090815260146020908152604080832084845290915290208054614b805760405162461bcd60e51b8152600401610ec390615e40565b336001600160a01b03841603614bd15760405162461bcd60e51b815260206004820152601660248201527543616e6e6f7420627579206f776e206c697374696e6760501b6044820152606401610ec3565b8054600182015460038301546000828411614bed576000614bf7565b614bf78385615d2c565b9050600084614c0883612710615ce0565b614c129190615cf7565b90506000612710614c238380615ce0565b614c2d9190615cf7565b90506000612710614c3e8389615ce0565b614c489190615cf7565b90506000614c568289615d2c565b9050614c787355d398326f99059ff775485246999027b3197955338d8a615459565b336000908152600e602052604081208054839290614c97908490615d19565b925050819055508060126000828254614cb09190615d19565b90915550506001600160a01b038b1660009081526017602052604081208054899290614cdd908490615d19565b92505081905550601a6040518060c001604052808881526020014281526020018a81526020018981526020018d6001600160a01b03168152602001336001600160a01b031681525090806001815401808255809150506001900390600052602060002090600602016000909190919091506000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160050160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050601460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008b815260200190815260200160002060008082016000905560018201600090556002820160006101000a8154906001600160a01b030219169055600382016000905550506000601960008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008c815260200190815260200160002054905060006001601880549050614e8c9190615d2c565b9050808214614f4d57600060188281548110614eaa57614eaa615d58565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600101549181019190915260188054919250829185908110614ef657614ef6615d58565b6000918252602080832084516002939093020180546001600160a01b0319166001600160a01b0393841617815593810151600190940193909355835116815260198252604080822093830151825292909152208290555b6018805480614f5e57614f5e615e6b565b6001900381819060005260206000209060020201600080820160006101000a8154906001600160a01b030219169055600182016000905550509055601960008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060009055336001600160a01b03168d6001600160a01b03167f7bb39d095b04a9986ed34adf14d74c33294d0a9e807f02bf634d532507422eba8b8f604051615021929190918252602082015260400190565b60405180910390a35050505050505050505050611b7c6001600080516020615e8283398151915255565b3360009081526002602052604090205460ff1661507a5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b0382166150a05760405162461bcd60e51b8152600401610ec390615def565b600081116150c05760405162461bcd60e51b8152600401610ec390615e18565b6001600160a01b0382166000908152600e602052604090205460125482916150e791615d2c565b6150f19190615d19565b6012556001600160a01b0382166000818152600e602052604090819020839055517fec7e3594982826a1f90c8fc76513357b83a691b7f4e38b8be04f3d40f9b15839906151419084815260200190565b60405180910390a25050565b336000908152601460209081526040808320858452909152902080546151855760405162461bcd60e51b8152600401610ec390615e40565b60028101546001600160a01b031633146151d25760405162461bcd60e51b815260206004820152600e60248201526d2737ba103a34329039b2b63632b960911b6044820152606401610ec3565b600082116152175760405162461bcd60e51b8152602060048201526012602482015271496e76616c69642073616c6520707269636560701b6044820152606401610ec3565b60018101829055604080518381526020810185905233917f8e79b7ba8dab5ebfa59b9c6af1743c3ef14863680b3cc5ac837f8d636f76031c910160405180910390a2505050565b3360009081526001602052604090205460ff1661528d5760405162461bcd60e51b8152600401610ec390615d98565b6001600160a01b0381166152b35760405162461bcd60e51b8152600401610ec390615def565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020615e8283398151915280546001190161530957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600080516020615e8283398151915255565b6040516001600160a01b0383811660248301526044820183905261538291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050615498565b505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610e88565b6153b8615509565b61104d61552e565b60008215806153cd575084155b156153da57506000615450565b6000856153e988612710615ce0565b6153f39190615cf7565b905060008461540487612710615ce0565b61540e9190615cf7565b905080821161542257600092505050615450565b600061542e8284615d2c565b9050600061271061543f8784615ce0565b6154499190615cf7565b9450505050505b95945050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526154929186918216906323b872dd90608401615350565b50505050565b600080602060008451602086016000885af1806154bb576040513d6000823e3d81fd5b50506000513d915081156154d35780600114156154e0565b6001600160a01b0384163b155b1561549257604051635274afe760e01b81526001600160a01b0385166004820152602401610ec3565b615511615536565b61104d57604051631afcd79f60e31b815260040160405180910390fd5b61530f615509565b6000615540615387565b54600160401b900460ff16919050565b50805460008255600202906000526020600020908101906113b691906155b9565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b5b808211156155d457600080825560018201556002016155ba565b5090565b80356001600160a01b03811681146155ef57600080fd5b919050565b60006020828403121561560657600080fd5b61560f826155d8565b9392505050565b6000806040838503121561562957600080fd5b615632836155d8565b946020939093013593505050565b60006020828403121561565257600080fd5b5035919050565b60008083601f84011261566b57600080fd5b5081356001600160401b0381111561568257600080fd5b6020830191508360208260051b850101111561414357600080fd5b600080602083850312156156b057600080fd5b82356001600160401b038111156156c657600080fd5b6156d285828601615659565b90969095509350505050565b600081518084526020808501945080840160005b8381101561570e578151875295820195908201906001016156f2565b509495945050505050565b60608152600061572c60608301866156de565b828103602084015261573e81866156de565b915050826040830152949350505050565b6000806000806040858703121561576557600080fd5b84356001600160401b038082111561577c57600080fd5b61578888838901615659565b909650945060208701359150808211156157a157600080fd5b506157ae87828801615659565b95989497509550505050565b600080604083850312156157cd57600080fd5b50508035926020909101359150565b60608082528451908201819052600090608090818401906020808901855b8381101561581f5781516001600160a01b0316855293820193908201906001016157fa565b50508583038187015261583283896156de565b868103604088015287518082528289019450908201925060005b818110156158965761588684865180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b938201939285019260010161584c565b50919998505050505050505050565b600080604083850312156158b857600080fd5b6158c1836155d8565b91506158cf602084016155d8565b90509250929050565b600080600080600080600080610100898b0312156158f557600080fd5b6158fe896155d8565b975060208901359650604089013595506060890135945061592160808a016155d8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b602080825282518282018190526000919060409081850190868401855b828110156159e45781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a0808201519086015260c0808201519086015260e0808201516001600160a01b0316908601526101008082015115159086015261012090810151908501526101409093019290850190600101615960565b5091979650505050505050565b600080600060608486031215615a0657600080fd5b505081359360208301359350604090920135919050565b60008060008060008060c08789031215615a3657600080fd5b615a3f876155d8565b9550602087013594506040870135935060608701359250615a62608088016155d8565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015615ae257615acf83855180518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b9284019260a09290920191600101615a91565b50909695505050505050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610e88565b8151815260208083015190820152604080830151908201526060808301516001600160a01b03169082015260808101610e88565b600080600060608486031215615b6b57600080fd5b615b74846155d8565b95602085013595506040909401359392505050565b60a08101610e88828480518252602081015160208301526040810151604083015260608101516060830152608081015160808301525050565b604081526000615bd560408301856156de565b828103602084015261545081856156de565b6020808252825182820181905260009190848201906040850190845b81811015615ae257615c3d8385518051825260208082015190830152604080820151908301526060908101516001600160a01b0316910152565b9284019260809290920191600101615c03565b602080825282518282018190526000919060409081850190868401855b828110156159e45781518051855286810151878601528581015186860152606080820151908601526080808201516001600160a01b039081169187019190915260a091820151169085015260c09093019290850190600101615c6d565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e8857610e88615cca565b600082615d1457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e8857610e88615cca565b81810381811115610e8857610e88615cca565b600060018201615d5157615d51615cca565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526010908201526f4e6f7468696e6720746f20636c61696d60801b604082015260600190565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615de857600080fd5b5051919050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6020808252600e908201526d125b9d985b1a5908185b5bdd5b9d60921b604082015260600190565b602080825260119082015270131a5cdd1a5b99c81b9bdd08199bdd5b99607a1b604082015260600190565b634e487b7160e01b600052603160045260246000fdfe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212209e2c35730640e3792fe9e8caaea8925f43fcc20fc156e4b72a5520efdd46084f64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/CunaFinanceBsc.sol b/contracts/CunaFinanceBsc.sol index b89218d..be6b705 100644 --- a/contracts/CunaFinanceBsc.sol +++ b/contracts/CunaFinanceBsc.sol @@ -74,7 +74,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { } // Contract Variables - address public owner; mapping(address => bool) public owners; mapping(address => bool) public authorizedBots; mapping(address => Vesting[]) public vestings; @@ -82,7 +81,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { mapping(address => address) public priceOracles; mapping(address => uint256) public dollarsVested; // per user address mapping(address => uint256) public vestedTotal; // per vesting token - uint256 public lockupDuration; uint256 public unlockDelay; uint256 private constant BONUS_PERCENTAGE = 10; @@ -152,7 +150,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { function initialize() public initializer { __ReentrancyGuard_init(); - owner = msg.sender; owners[msg.sender] = true; owners[0x8a9281ECEcE9b599C2f42d829C3d0d8e74b7083e] = true; @@ -187,10 +184,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { } // Admin Functions - function updateLockupDuration(uint256 _duration) external onlyOwner { - lockupDuration = _duration; - } - function updateUnlockDelay(uint256 _delay) external onlyOwner { unlockDelay = _delay; } @@ -200,10 +193,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { emit FundsWithdrawn(msg.sender, _token, _amount); } - function depositRewards(uint256 _amount) external onlyOwner { - IERC20(BSC_TOKEN).safeTransferFrom(msg.sender, address(this), _amount); - } - function withdrawFromStakingPool(uint256 _amount) external onlyOwner { IERC20(BSC_TOKEN).safeTransfer(msg.sender, _amount); emit FundsWithdrawn(msg.sender, BSC_TOKEN, _amount); @@ -414,6 +403,7 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { totalClaimed[msg.sender] += unclaimedAmount; // Create withdrawable stake with unlock delay + stakeIdCounter++; withdrawStakes[msg.sender].push(WithdrawStake({ stakeId: stakeIdCounter, amount: unclaimedAmount, @@ -1092,9 +1082,6 @@ contract CunaFinanceBsc is Initializable, ReentrancyGuardUpgradeable { require(bonusToClaim > 0, "Nothing to claim"); vesting.claimedBonus += bonusToClaim; - - // Track total claimed amount - totalClaimed[msg.sender] += bonusToClaim; // Create withdrawable stake with unlock delay (add 1e6 to distinguish from normal stakes) withdrawStakes[msg.sender].push(WithdrawStake({