0 txs
5.7k calls
constructor
constructor()
functions
creatorFeePercent() view returns (uint256)
getBuyPrice(bytes32 wearablesSubject, uint256 amount) view returns (uint256)
getBuyPriceAfterFee(bytes32 wearablesSubject, uint256 amount) view returns (uint256)
getPrice(uint256 supply, uint256 amount, uint256 totalSupply, uint256 curveFactor, uint256 initialPriceFactor, bool isBuy) pure returns (uint256)
getSellPrice(bytes32 wearablesSubject, uint256 amount) view returns (uint256)
getSellPriceAfterFee(bytes32 wearablesSubject, uint256 amount) view returns (uint256)
getUserNonce(address user) view returns (uint256)
nonces(address) view returns (uint256)
owner() view returns (address)
pendingOwner() view returns (address)
protocolFeeDestination() view returns (address)
protocolFeePercent() view returns (uint256)
proxiableUUID() view returns (bytes32)
wearableOperator() view returns (address)
wearables(bytes32) view returns (address creator, string name, string category, string imageURI, (uint256 supplyFactor, uint256 curveFactor, uint256 initialPriceFactor) factors, uint8 state)
wearablesBalance(bytes32, address) view returns (uint256)
wearableSigner() view returns (address)
wearablesSupply(bytes32) view returns (uint256)
acceptOwnership()
batchSetWearableSalesState(bytes32[] wearablesSubjects, uint8 saleState)
buyPrivateWearables(bytes32 wearablesSubject, uint256 amount, bytes signature) payable
buyWearables(bytes32 wearablesSubject, uint256 amount) payable
createWearable((address creator, string name, string category, string imageURI, bool isPublic, uint256 supplyFactor, uint256 curveFactor, uint256 initialPriceFactor) params)
initialize(address _wearableOperator, address _signer)
renounceOwnership()
sellPrivateWearables(bytes32 wearablesSubject, uint256 amount, bytes signature) payable
sellWearables(bytes32 wearablesSubject, uint256 amount) payable
setCreatorFeePercent(uint256 _feePercent)
setProtocolFeeDestination(address _feeDestination)
setProtocolFeePercent(uint256 _feePercent)
setWearableOperator(address _operator)
setWearableSalesState(bytes32 wearablesSubject, uint8 saleState)
setWearableSigner(address _signer)
transferOwnership(address newOwner)
transferWearables(bytes32 wearablesSubject, address from, address to, uint256 amount)
upgradeTo(address newImplementation)
upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded(address indexed beacon)
CreatorFeePercentUpdated(uint256 feePercent)
Initialized(uint8 version)
NonceUpdated(address user, uint256 nonce)
OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
ProtocolFeeDestinationUpdated(address feeDestination)
ProtocolFeePercentUpdated(uint256 feePercent)
Trade(address trader, bytes32 subject, bool isBuy, bool isPublic, uint256 wearableAmount, uint256 ethAmount, uint256 protocolEthAmount, uint256 creatorEthAmount, uint256 supply)
Upgraded(address indexed implementation)
WearableCreated(address creator, bytes32 subject, string name, string category, string imageURI, (uint256 supplyFactor, uint256 curveFactor, uint256 initialPriceFactor) factors, uint8 state)
WearableOperatorUpdated(address operator)
WearableSaleStateUpdated(bytes32 wearablesSubject, uint8 saleState)
WearableSignerUpdated(address signer)
WearableTransferred(address from, address to, bytes32 subject, uint256 amount)
errors
AmountNotMultipleOfBaseUnit()
ExcessivePayment()
IncorrectSender()
InsufficientBaseUnit()
InsufficientHoldings()
InsufficientPayment()
InvalidCurveFactor()
InvalidFeePercent()
InvalidInitialPriceFactor()
InvalidOperator()
InvalidSaleState()
InvalidSignature()
InvalidTotalSupply()
SendFundsFailed()
TotalSupplyExceeded()
TransferToZeroAddress()
WearableAlreadyCreated()
WearableNotCreated()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516136bb6200011f60003960008181610d9701528181610de00152818161143701528181611477015261150a01526136bb6000f3fe60806040526004361061021a5760003560e01c80636cbef46111610123578063aa07c98a116100ab578063e6aa2a8c1161006f578063e6aa2a8c1461063d578063f2fde38b1461065d578063f4868ca51461067d578063f4d2ed081461069d578063f9855735146106bd57600080fd5b8063aa07c98a146105a9578063aabf7a44146105c9578063cad244cd146105e9578063d6e6eb9f14610609578063e30c39781461061f57600080fd5b806379ba5097116100f257806379ba5097146105085780637ecebe001461051d5780638da5cb5b1461054b578063a10786b014610569578063a49834211461058957600080fd5b80636cbef461146104ad5780636ff6c4b8146104c0578063715018a6146104e0578063723e224a146104f557600080fd5b80634236e876116101a65780634f1ef286116101755780634f1ef2861461041857806352d1902d1461042b57806353613dd3146104405780636834e3a8146104565780636c9a3dad1461048d57600080fd5b80634236e8761461037f57806343d61e4f1461039f578063485cc955146103d85780634ce7957c146103f857600080fd5b80633659cfe6116101ed5780633659cfe6146102bf5780633a68ec3b146102df5780633d8ee40c146103115780633e3e1f0414610331578063420b14351461035f57600080fd5b80630efee4371461021f578063150906061461025c5780632e50b9141461027e5780633456816a146102ac575b600080fd5b34801561022b57600080fd5b5060fe5461023f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561026857600080fd5b5061027c610277366004612ca6565b6106d0565b005b34801561028a57600080fd5b5061029e610299366004612ce2565b610aba565b604051908152602001610253565b61027c6102ba366004612d04565b610b16565b3480156102cb57600080fd5b5061027c6102da366004612da0565b610d8d565b3480156102eb57600080fd5b506102ff6102fa366004612dbb565b610e75565b60405161025396959493929190612e5c565b34801561031d57600080fd5b5061027c61032c366004612da0565b611074565b34801561033d57600080fd5b5061029e61034c366004612dbb565b6101026020526000908152604090205481565b34801561036b57600080fd5b5061027c61037a366004612eda565b6110d1565b34801561038b57600080fd5b5061029e61039a366004612ce2565b611294565b3480156103ab57600080fd5b5061029e6103ba366004612f1e565b61010160209081526000928352604080842090915290825290205481565b3480156103e457600080fd5b5061027c6103f3366004612f4a565b6112d2565b34801561040457600080fd5b5060fb5461023f906001600160a01b031681565b61027c610426366004612f8a565b61142d565b34801561043757600080fd5b5061029e6114fd565b34801561044c57600080fd5b5061029e60fd5481565b34801561046257600080fd5b5061029e610471366004612da0565b6001600160a01b03166000908152610103602052604090205490565b34801561049957600080fd5b5061029e6104a8366004612ce2565b6115b0565b61027c6104bb366004612ce2565b6115ee565b3480156104cc57600080fd5b5061027c6104db366004612dbb565b6116ce565b3480156104ec57600080fd5b5061027c611741565b61027c610503366004612ce2565b611755565b34801561051457600080fd5b5061027c611835565b34801561052957600080fd5b5061029e610538366004612da0565b6101036020526000908152604090205481565b34801561055757600080fd5b506033546001600160a01b031661023f565b34801561057557600080fd5b5061027c610584366004612da0565b6118ac565b34801561059557600080fd5b5061027c6105a4366004612dbb565b611902565b3480156105b557600080fd5b5061027c6105c436600461305b565b611975565b3480156105d557600080fd5b5060ff5461023f906001600160a01b031681565b3480156105f557600080fd5b5061029e610604366004612ce2565b611a60565b34801561061557600080fd5b5061029e60fc5481565b34801561062b57600080fd5b506065546001600160a01b031661023f565b34801561064957600080fd5b5061027c610658366004612da0565b611abb565b34801561066957600080fd5b5061027c610678366004612da0565b611b11565b34801561068957600080fd5b5061029e6106983660046130ef565b611b82565b3480156106a957600080fd5b5061027c6106b8366004613140565b611c1a565b61027c6106cb366004612d04565b611cb5565b60ff546001600160a01b031633146106fb5760405163ccea9e6f60e01b815260040160405180910390fd5b60018160a00135108061071357506127108160a00135115b15610731576040516334bbd58560e01b815260040160405180910390fd5b60018160c00135108061074957506103e88160c00135115b1561076757604051633a0f339560e21b815260040160405180910390fd5b60648160e00135108061077f57506103e88160e00135115b1561079d5760405163d515582960e01b815260040160405180910390fd5b60006107ac6020830183613163565b6107b96060850185613163565b6040516020016107cc94939291906131d3565b60408051601f19818403018152918152815160209283012060008181526101009093529120549091506001600160a01b03161561081c576040516341623d0560e01b815260040160405180910390fd5b600061082e60a08401608085016131fa565b61083957600061083c565b60015b9050600060405180606001604052808560a0013581526020018560c0013581526020018560e0013581525090506040518060c001604052808560000160208101906108879190612da0565b6001600160a01b031681526020018580602001906108a59190613163565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016108ec6040870187613163565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016109336060870187613163565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020810183905260400183600181111561098657610986612e24565b9052600084815261010060209081526040909120825181546001600160a01b0319166001600160a01b039091161781559082015160018201906109c9908261329d565b50604082015160028201906109de908261329d565b50606082015160038201906109f3908261329d565b506080820151805160048301556020810151600583015560400151600682015560a082015160078201805460ff191660018381811115610a3557610a35612e24565b02179055507f8d35d78b9ce45c1c69445a734dd787e62bf7454e41bae87772befeebf139b1f19150610a6c90506020860186612da0565b84610a7a6020880188613163565b610a8760408a018a613163565b610a9460608c018c613163565b898b604051610aac9a9998979695949392919061335d565b60405180910390a150505050565b600082815261010060209081526040808320600481015460058201546006909201546101029094529184205491929091610b0a9086610b0186670de0b6b3a764000061340b565b85856001611b82565b93505050505b92915050565b66038d7ea4c68000831015610b3e576040516391acf56f60e01b815260040160405180910390fd5b610b4f66038d7ea4c6800084613438565b15610b6d576040516371f3285560e11b815260040160405180910390fd5b600084815261010060205260409020546001600160a01b0316610ba35760405163156966a960e21b815260040160405180910390fd5b6000848152610100602052604081206007015460ff166001811115610bca57610bca612e24565b14610be857604051633482502f60e01b815260040160405180910390fd5b3360008181526101036020908152604080832054905160609490941b6bffffffffffffffffffffffff1916918401919091526262757960e81b6034840152603783018790526057830186905260778301819052916097016040516020818303038152906040528051906020012090506000610c90827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b60fe54604080516020601f89018190048102820181019092528781529293506001600160a01b0390911691610ce29188908890819084018382808284376000920191909152508693925050611f279050565b6001600160a01b031614610d0957604051638baa579f60e01b815260040160405180910390fd5b33600090815261010360205260408120805460019290610d2a90849061344c565b90915550503360008181526101036020908152604091829020548251938452908301527f2ddf4902150368e68ca3b1565faf1e0603da0895a2699dc884f1db788c8396a2910160405180910390a1505050610d8784846000611f4b565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610dde5760405162461bcd60e51b8152600401610dd59061345f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e2760008051602061363f833981519152546001600160a01b031690565b6001600160a01b031614610e4d5760405162461bcd60e51b8152600401610dd5906134ab565b610e56816121cf565b60408051600080825260208201909252610e72918391906121d7565b50565b61010060205260009081526040902080546001820180546001600160a01b039092169291610ea290613215565b80601f0160208091040260200160405190810160405280929190818152602001828054610ece90613215565b8015610f1b5780601f10610ef057610100808354040283529160200191610f1b565b820191906000526020600020905b815481529060010190602001808311610efe57829003601f168201915b505050505090806002018054610f3090613215565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5c90613215565b8015610fa95780601f10610f7e57610100808354040283529160200191610fa9565b820191906000526020600020905b815481529060010190602001808311610f8c57829003601f168201915b505050505090806003018054610fbe90613215565b80601f0160208091040260200160405190810160405280929190818152602001828054610fea90613215565b80156110375780601f1061100c57610100808354040283529160200191611037565b820191906000526020600020905b81548152906001019060200180831161101a57829003601f168201915b505060408051606081018252600487015481526005870154602082015260068701549181019190915260079095015493949360ff16925088915050565b61107c612342565b60fe80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7c5de6c9484fe1791c429caf029dce7d92d8b90baae2aa812813d99edae616a3906020015b60405180910390a150565b6001600160a01b0382166110f857604051633a954ecd60e21b815260040160405180910390fd5b66038d7ea4c68000811015611120576040516391acf56f60e01b815260040160405180910390fd5b61113166038d7ea4c6800082613438565b1561114f576040516371f3285560e11b815260040160405180910390fd5b336001600160a01b0384161461117857604051637d1c29f360e01b815260040160405180910390fd5b6000848152610101602090815260408083206001600160a01b03871684529091529020548111156111bc5760405163fdc9902d60e01b815260040160405180910390fd5b6000848152610101602090815260408083206001600160a01b03871684529091529020546111eb9082906134f7565b6000858152610101602090815260408083206001600160a01b03888116855292528083209390935584168152205461122490829061344c565b6000858152610101602090815260408083206001600160a01b0387811680865291845293829020949094558051928716835290820192909252908101859052606081018290527f05fbb3a0c4db99e4a77481987705b0cb15d269dd5ffa5e03667ee32efab738a890608001610aac565b6000806112a18484611a60565b905060006112ae8261239c565b905060006112bb836123bf565b9050806112c883856134f7565b610b0a91906134f7565b600054610100900460ff16158080156112f25750600054600160ff909116105b8061130c5750303b15801561130c575060005460ff166001145b61136f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610dd5565b6000805460ff191660011790558015611392576000805461ff0019166101001790555b666a94d74f43000060fc81905560fd5560ff80546001600160a01b038086166001600160a01b03199283161790925560fe8054928516929091169190911790556113da6123d8565b6113e2612407565b8015611428576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114755760405162461bcd60e51b8152600401610dd59061345f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114be60008051602061363f833981519152546001600160a01b031690565b6001600160a01b0316146114e45760405162461bcd60e51b8152600401610dd5906134ab565b6114ed826121cf565b6114f9828260016121d7565b5050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461159d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610dd5565b5060008051602061363f83398151915290565b6000806115bd8484610aba565b905060006115ca8261239c565b905060006115d7836123bf565b9050806115e4838561344c565b610b0a919061344c565b66038d7ea4c68000811015611616576040516391acf56f60e01b815260040160405180910390fd5b61162766038d7ea4c6800082613438565b15611645576040516371f3285560e11b815260040160405180910390fd5b600082815261010060205260409020546001600160a01b031661167b5760405163156966a960e21b815260040160405180910390fd5b60016000838152610100602052604090206007015460ff1660018111156116a4576116a4612e24565b146116c257604051633482502f60e01b815260040160405180910390fd5b6114f982826001611f4b565b6116d6612342565b6702c68af0bb14000060fc54826116ed919061344c565b111561170c57604051638a81d3b360e01b815260040160405180910390fd5b60fd8190556040518181527ff94832cd6cb3b731db197cb04c72105b97bc2fd0292f188007d46cd6fd3f8e73906020016110c6565b611749612342565b611753600061242e565b565b66038d7ea4c6800081101561177d576040516391acf56f60e01b815260040160405180910390fd5b61178e66038d7ea4c6800082613438565b156117ac576040516371f3285560e11b815260040160405180910390fd5b600082815261010060205260409020546001600160a01b03166117e25760405163156966a960e21b815260040160405180910390fd5b60016000838152610100602052604090206007015460ff16600181111561180b5761180b612e24565b1461182957604051633482502f60e01b815260040160405180910390fd5b6114f982826001612447565b60655433906001600160a01b031681146118a35760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610dd5565b610e728161242e565b6118b4612342565b60fb80546001600160a01b0319166001600160a01b0383169081179091556040519081527f4907155279818c6a4cc7f8cd1dfc9ddd3d180b957ddd9ca2838c3fb3dc4cedb4906020016110c6565b61190a612342565b6702c68af0bb14000060fd5482611921919061344c565b111561194057604051638a81d3b360e01b815260040160405180910390fd5b60fc8190556040518181527fa5c267c300696b3221974b5d94af56248d0aa8ff7bb91204bfc87be4835d4332906020016110c6565b60ff546001600160a01b031633146119a05760405163ccea9e6f60e01b815260040160405180910390fd5b60005b82811015610d87578161010060008686858181106119c3576119c361350a565b60209081029290920135835250810191909152604001600020600701805460ff1916600183818111156119f8576119f8612e24565b02179055507f811af1ae2a68147222d5e67521dffde594a885944ad70eb4e058294bb08f18f2848483818110611a3057611a3061350a565b9050602002013583604051611a46929190613520565b60405180910390a180611a5881613534565b9150506119a3565b600082815261010060209081526040808320600481015460058201546006909201546101029094529184205491929091610b0a90611a9f9087906134f7565b86611ab286670de0b6b3a764000061340b565b85856000611b82565b611ac3612342565b60ff80546001600160a01b0319166001600160a01b0383169081179091556040519081527f392208663aaba8bd9cdff20c7faabac5fa14620cbde5d81fff0a625d3f45dd60906020016110c6565b611b19612342565b606580546001600160a01b0383166001600160a01b03199091168117909155611b4a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000818015611b9a575084611b97878961344c565b10155b15611bb857604051637eaca13d60e11b815260040160405180910390fd5b81158015611bc65750848710155b15611be457604051637eaca13d60e11b815260040160405180910390fd5b611bf087868686612714565b611c05611bfd888a61344c565b878787612714565b611c0f91906134f7565b979650505050505050565b60ff546001600160a01b03163314611c455760405163ccea9e6f60e01b815260040160405180910390fd5b600082815261010060205260409020600701805482919060ff191660018381811115611c7357611c73612e24565b02179055507f811af1ae2a68147222d5e67521dffde594a885944ad70eb4e058294bb08f18f28282604051611ca9929190613520565b60405180910390a15050565b66038d7ea4c68000831015611cdd576040516391acf56f60e01b815260040160405180910390fd5b611cee66038d7ea4c6800084613438565b15611d0c576040516371f3285560e11b815260040160405180910390fd5b600084815261010060205260409020546001600160a01b0316611d425760405163156966a960e21b815260040160405180910390fd5b6000848152610100602052604081206007015460ff166001811115611d6957611d69612e24565b14611d8757604051633482502f60e01b815260040160405180910390fd5b3360008181526101036020908152604080832054905160609490941b6bffffffffffffffffffffffff191691840191909152631cd95b1b60e21b6034840152603883018790526058830186905260788301819052916098016040516020818303038152906040528051906020012090506000611e30827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b60fe54604080516020601f89018190048102820181019092528781529293506001600160a01b0390911691611e829188908890819084018382808284376000920191909152508693925050611f279050565b6001600160a01b031614611ea957604051638baa579f60e01b815260040160405180910390fd5b33600090815261010360205260408120805460019290611eca90849061344c565b90915550503360008181526101036020908152604091829020548251938452908301527f2ddf4902150368e68ca3b1565faf1e0603da0895a2699dc884f1db788c8396a2910160405180910390a1505050610d8784846000612447565b6000806000611f36858561278e565b91509150611f43816127d3565b509392505050565b60008381526101026020908152604080832054610100909252822060040154909190611fa89083908690611f8790670de0b6b3a764000061340b565b60008981526101006020526040902060058101546006909101546001611b82565b90506000611fb58261239c565b90506000611fc2836123bf565b905080611fcf838561344c565b611fd9919061344c565b341015611ff95760405163cd1c886760e01b815260040160405180910390fd5b80612004838561344c565b61200e919061344c565b34111561202e57604051631e33487360e11b815260040160405180910390fd5b60008781526101016020908152604080832033845290915290205461205490879061344c565b600088815261010160209081526040808320338452909152902055612079868561344c565b60008881526101026020908152604080832093909355610100905220546001600160a01b03167fc3c743778cbda2f66551d22d13c5e66b51917af7cf9d07ddc3696e17540b977a33896001898b8989896120d3848f61344c565b6040516120e89998979695949392919061354d565b60405180910390a160fb546040516000916001600160a01b03169085908381818185875af1925050503d806000811461213d576040519150601f19603f3d011682016040523d82523d6000602084013e612142565b606091505b505090506000826001600160a01b03168460405160006040518083038185875af1925050503d8060008114612193576040519150601f19603f3d011682016040523d82523d6000602084013e612198565b606091505b505090508180156121a65750805b6121c357604051631a7a493760e01b815260040160405180910390fd5b50505050505050505050565b610e72612342565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561220a576114288361291d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612264575060408051601f3d908101601f1916820190925261226191810190613597565b60015b6122c75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610dd5565b60008051602061363f83398151915281146123365760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610dd5565b506114288383836129b9565b6033546001600160a01b031633146117535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dd5565b6000670de0b6b3a764000060fc54836123b5919061340b565b610b1091906135b0565b6000670de0b6b3a764000060fd54836123b5919061340b565b600054610100900460ff166123ff5760405162461bcd60e51b8152600401610dd5906135c4565b6117536129de565b600054610100900460ff166117535760405162461bcd60e51b8152600401610dd5906135c4565b606580546001600160a01b0319169055610e7281612a0e565b60008381526101026020526040812054906124ad61246585846134f7565b60008781526101006020526040902060040154869061248c90670de0b6b3a764000061340b565b60008981526101006020526040812060058101546006909101549091611b82565b905060006124ba8261239c565b905060006124c7836123bf565b6000888152610101602090815260408083203384529091529020549091508611156125055760405163fdc9902d60e01b815260040160405180910390fd5b60008781526101016020908152604080832033845290915290205461252b9087906134f7565b60008881526101016020908152604080832033845290915290205561255086856134f7565b600088815261010260209081526040808320939093556101009052908120546001600160a01b0316907fc3c743778cbda2f66551d22d13c5e66b51917af7cf9d07ddc3696e17540b977a9033908a90898b8989896125ae848f6134f7565b6040516125c39998979695949392919061354d565b60405180910390a1600033836125d986886134f7565b6125e391906134f7565b604051600081818185875af1925050503d806000811461261f576040519150601f19603f3d011682016040523d82523d6000602084013e612624565b606091505b505060fb546040519192506000916001600160a01b039091169086908381818185875af1925050503d8060008114612678576040519150601f19603f3d011682016040523d82523d6000602084013e61267d565b606091505b505090506000836001600160a01b03168560405160006040518083038185875af1925050503d80600081146126ce576040519150601f19603f3d011682016040523d82523d6000602084013e6126d3565b606091505b505090508280156126e15750815b80156126ea5750805b61270757604051631a7a493760e01b815260040160405180910390fd5b5050505050505050505050565b60006103e8612723868461340b565b61272d91906135b0565b61273f84670de0b6b3a764000061340b565b61274987876134f7565b612753868861340b565b61276590670de0b6b3a764000061340b565b61276f91906135b0565b61277991906134f7565b61278391906134f7565b90505b949350505050565b60008082516041036127c45760208301516040840151606085015160001a6127b887828585612a60565b945094505050506127cc565b506000905060025b9250929050565b60008160048111156127e7576127e7612e24565b036127ef5750565b600181600481111561280357612803612e24565b036128505760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610dd5565b600281600481111561286457612864612e24565b036128b15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610dd5565b60038160048111156128c5576128c5612e24565b03610e725760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610dd5565b6001600160a01b0381163b61298a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610dd5565b60008051602061363f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6129c283612b24565b6000825111806129cf5750805b1561142857610d878383612b64565b600054610100900460ff16612a055760405162461bcd60e51b8152600401610dd5906135c4565b6117533361242e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612a975750600090506003612b1b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612aeb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612b1457600060019250925050612b1b565b9150600090505b94509492505050565b612b2d8161291d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612b89838360405180606001604052806027815260200161365f60279139612b90565b9392505050565b6060600080856001600160a01b031685604051612bad919061360f565b600060405180830381855af49150503d8060008114612be8576040519150601f19603f3d011682016040523d82523d6000602084013e612bed565b606091505b5091509150612bfe86838387612c08565b9695505050505050565b60608315612c77578251600003612c70576001600160a01b0385163b612c705760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dd5565b5081612786565b6127868383815115612c8c5781518083602001fd5b8060405162461bcd60e51b8152600401610dd5919061362b565b600060208284031215612cb857600080fd5b813567ffffffffffffffff811115612ccf57600080fd5b82016101008185031215612b8957600080fd5b60008060408385031215612cf557600080fd5b50508035926020909101359150565b60008060008060608587031215612d1a57600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115612d4057600080fd5b818701915087601f830112612d5457600080fd5b813581811115612d6357600080fd5b886020828501011115612d7557600080fd5b95989497505060200194505050565b80356001600160a01b0381168114612d9b57600080fd5b919050565b600060208284031215612db257600080fd5b612b8982612d84565b600060208284031215612dcd57600080fd5b5035919050565b60005b83811015612def578181015183820152602001612dd7565b50506000910152565b60008151808452612e10816020860160208601612dd4565b601f01601f19169290920160200192915050565b634e487b7160e01b600052602160045260246000fd5b60028110612e5857634e487b7160e01b600052602160045260246000fd5b9052565b6001600160a01b038716815261010060208201819052600090612e8183820189612df8565b90508281036040840152612e958188612df8565b90508281036060840152612ea98187612df8565b85516080850152602086015160a0850152604086015160c08501529150612ecd9050565b611c0f60e0830184612e3a565b60008060008060808587031215612ef057600080fd5b84359350612f0060208601612d84565b9250612f0e60408601612d84565b9396929550929360600135925050565b60008060408385031215612f3157600080fd5b82359150612f4160208401612d84565b90509250929050565b60008060408385031215612f5d57600080fd5b612f6683612d84565b9150612f4160208401612d84565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f9d57600080fd5b612fa683612d84565b9150602083013567ffffffffffffffff80821115612fc357600080fd5b818501915085601f830112612fd757600080fd5b813581811115612fe957612fe9612f74565b604051601f8201601f19908116603f0116810190838211818310171561301157613011612f74565b8160405282815288602084870101111561302a57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b803560028110612d9b57600080fd5b60008060006040848603121561307057600080fd5b833567ffffffffffffffff8082111561308857600080fd5b818601915086601f83011261309c57600080fd5b8135818111156130ab57600080fd5b8760208260051b85010111156130c057600080fd5b6020928301955093506130d6918601905061304c565b90509250925092565b80358015158114612d9b57600080fd5b60008060008060008060c0878903121561310857600080fd5b863595506020870135945060408701359350606087013592506080870135915061313460a088016130df565b90509295509295509295565b6000806040838503121561315357600080fd5b82359150612f416020840161304c565b6000808335601e1984360301811261317a57600080fd5b83018035915067ffffffffffffffff82111561319557600080fd5b6020019150368190038213156127cc57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006131e76040830186886131aa565b8281036020840152611c0f8185876131aa565b60006020828403121561320c57600080fd5b612b89826130df565b600181811c9082168061322957607f821691505b60208210810361324957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561142857600081815260208120601f850160051c810160208610156132765750805b601f850160051c820191505b8181101561329557828155600101613282565b505050505050565b815167ffffffffffffffff8111156132b7576132b7612f74565b6132cb816132c58454613215565b8461324f565b602080601f83116001811461330057600084156132e85750858301515b600019600386901b1c1916600185901b178555613295565b600085815260208120601f198616915b8281101561332f57888601518255948401946001909101908401613310565b508582101561334d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038b168152602081018a90526101206040820181905260009061338a8382018b8d6131aa565b9050828103606084015261339f81898b6131aa565b905082810360808401526133b48187896131aa565b855160a0850152602086015160c0850152604086015160e085015291506133d89050565b6133e6610100830184612e3a565b9b9a5050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b1057610b106133f5565b634e487b7160e01b600052601260045260246000fd5b60008261344757613447613422565b500690565b80820180821115610b1057610b106133f5565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b81810381811115610b1057610b106133f5565b634e487b7160e01b600052603260045260246000fd5b82815260408101612b896020830184612e3a565b600060018201613546576135466133f5565b5060010190565b6001600160a01b03999099168952602089019790975294151560408801529215156060870152608086019190915260a085015260c084015260e08301526101008201526101200190565b6000602082840312156135a957600080fd5b5051919050565b6000826135bf576135bf613422565b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251613621818460208701612dd4565b9190910192915050565b602081526000612b896020830184612df856fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206d184c08ee3650515ac0a591045e72fe633bbf4459f5a7c4a711511a655487fc64736f6c63430008130033