0 txs
0 calls
constructor
constructor(uint256 fairxyzMintFee_, address fairxyzReceiver_, address fairxyzSigner_, address fairxyzStagesRegistry_, uint256 maxMintsPerTransaction_, uint256 maxRecipientsPerAirdrop_, address operatorFilterRegistry_, address operatorFilterSubscription_)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DEFAULT_SUBSCRIPTION_ADDRESS
viewfunction DEFAULT_SUBSCRIPTION_ADDRESS() view returns (address)
editionTotalSupply
viewfunction editionTotalSupply(uint256 editionId) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getEdition
viewfunction getEdition(uint256 editionId) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
operatorFilterDisabled
viewfunction operatorFilterDisabled() view returns (bool)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
REGISTRY_ADDRESS
viewfunction REGISTRY_ADDRESS() view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address receiver, uint256 royaltyAmount)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256 supply)
acceptOwnership
nonpayablefunction acceptOwnership()
airdropEdition
nonpayablefunction airdropEdition(uint256 editionId, uint256 quantity, address[] recipients)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId)
createEditions
nonpayablefunction createEditions(tuple[] editions)
deleteEdition
nonpayablefunction deleteEdition(uint256 editionId)
grantDefaultAdmin
nonpayablefunction grantDefaultAdmin(address admin)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(string name_, string symbol_, address owner_, uint96 defaultRoyalty_, tuple[] editions_, bool operatorFilterEnabled_)
mintEdition
payablefunction mintEdition(uint256 editionId, address recipient, uint256 quantity, uint40 signatureNonce, uint256 signatureMaxMints, bytes signature) payable
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
pause
nonpayablefunction pause()
releaseEditionSignature
nonpayablefunction releaseEditionSignature(uint256 editionId)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint96 royaltyFraction)
setEditionBurnable
nonpayablefunction setEditionBurnable(uint256 editionId, bool burnable)
setEditionMaxMintsPerWallet
nonpayablefunction setEditionMaxMintsPerWallet(uint256 editionId, uint40 maxMintsPerWallet)
setEditionMaxSupply
nonpayablefunction setEditionMaxSupply(uint256 editionId, uint40 maxSupply)
setEditionRoyalty
nonpayablefunction setEditionRoyalty(uint256 editionId, address receiver, uint96 royaltyFraction)
setEditionStages
nonpayablefunction setEditionStages(uint256 editionId, uint256 fromIndex, tuple[] stages)
setEditionURI
nonpayablefunction setEditionURI(uint256 editionId, string uri)
setPrimarySaleReceiver
nonpayablefunction setPrimarySaleReceiver(address primarySaleReceiver)
setTokenRoyalty
nonpayablefunction setTokenRoyalty(uint256 tokenId, address receiver, uint96 royaltyFraction)
setTokenURI
nonpayablefunction setTokenURI(uint256 tokenId, string uri)
toggleOperatorFilterDisabled
nonpayablefunction toggleOperatorFilterDisabled()
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
DefaultRoyalty
event DefaultRoyalty(address receiver, uint96 royaltyFraction)
EditionAirdrop
event EditionAirdrop(uint256 indexed editionId, uint256 indexed stageIndex, address[] recipients, uint256 quantity, uint256 editionMintedCount)
EditionBurnable
event EditionBurnable(uint256 indexed editionId, bool burnable)
EditionCreated
event EditionCreated(uint256 indexed editionId, uint256 externalId, (uint40 maxMintsPerWallet, uint40 maxSupply, bool burnable, bool signatureReleased, bool soulbound) edition)
EditionDeleted
event EditionDeleted(uint256 indexed editionId)
EditionMaxMintsPerWallet
event EditionMaxMintsPerWallet(uint256 indexed editionId, uint256 maxMintsPerWallet)
EditionMaxSupply
event EditionMaxSupply(uint256 indexed editionId, uint256 maxSupply)
EditionRoyalty
event EditionRoyalty(uint256 indexed editionId, address receiver, uint96 royaltyFraction)
EditionSignatureReleased
event EditionSignatureReleased(uint256 indexed editionId)
EditionStageMint
event EditionStageMint(uint256 indexed editionId, uint256 indexed stageIndex, address indexed recipient, uint256 quantity, uint256 editionMintedCount)
EditionURI
event EditionURI(uint256 indexed editionId, string uri)
Initialized
event Initialized(uint8 version)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
OperatorFilterDisabled
event OperatorFilterDisabled(bool disabled)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PrimarySaleReceiver
event PrimarySaleReceiver(address primarySaleReceiver_)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TokenRoyalty
event TokenRoyalty(uint256 indexed tokenId, address receiver, uint96 royaltyFraction)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Unpaused
event Unpaused(address account)
errors
EditionAlreadyMinted
error EditionAlreadyMinted()
EditionDoesNotExist
error EditionDoesNotExist()
EditionSignatureAlreadyReleased
error EditionSignatureAlreadyReleased()
EditionSupplyCanOnlyBeReduced
error EditionSupplyCanOnlyBeReduced()
EditionSupplyLessThanMintedCount
error EditionSupplyLessThanMintedCount()
EditionSupplyLessThanScheduledStagesPhaseLimit
error EditionSupplyLessThanScheduledStagesPhaseLimit()
EditionSupplyTooLarge
error EditionSupplyTooLarge()
IncorrectEthValue
error IncorrectEthValue()
InvalidMintQuantity
error InvalidMintQuantity()
InvalidNumberOfRecipients
error InvalidNumberOfRecipients()
InvalidRoyaltyFraction
error InvalidRoyaltyFraction()
InvalidSignature
error InvalidSignature()
InvalidSignatureNonce
error InvalidSignatureNonce()
InvalidURI
error InvalidURI()
NotApprovedOrOwner
error NotApprovedOrOwner()
NotBurnable
error NotBurnable()
NotEnoughSupplyRemaining
error NotEnoughSupplyRemaining()
NotTransferable
error NotTransferable()
OnlyAdmin
error OnlyAdmin()
RecipientAllowanceUsed
error RecipientAllowanceUsed()
RecipientEditionAllowanceUsed
error RecipientEditionAllowanceUsed()
RecipientStageAllowanceUsed
error RecipientStageAllowanceUsed()
SignatureAlreadyUsed
error SignatureAlreadyUsed()
SignatureExpired
error SignatureExpired()
StageSoldOut
error StageSoldOut()
TokenDoesNotExist
error TokenDoesNotExist()
ZeroAddress
error ZeroAddress()
creation bytecode
0x6101a06040523480156200001257600080fd5b506040516200622b3803806200622b833981016040819052620000359162000190565b878787876200004a6001633b9aca006200021d565b6001600160a01b0380881660805280871660a05260c086905280851660e05280841661010052821661012052610140819052610160889052876200008d620000b2565b50505061018087905250620000a4915050620000b2565b505050505050505062000245565b600054610100900460ff16156200011f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000171576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200018b57600080fd5b919050565b600080600080600080600080610100898b031215620001ae57600080fd5b88519750620001c060208a0162000173565b9650620001d060408a0162000173565b9550620001e060608a0162000173565b94506080890151935060a08901519250620001fe60c08a0162000173565b91506200020e60e08a0162000173565b90509295985092959890939650565b818103818111156200023f57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05160c05160e0516101005161012051610140516101605161018051615ef762000334600039600061304e015260006125e8015260008181612fdc015281816135ab0152613d4d015260008181610de0015281816113070152818161139601528181611e6e015281816126ee015261381901526000612e56015260006111a5015260008181610e9101526111c70152600081816106180152818161445301526144a001526000818161092601528181610cdf01528181610d42015281816120de015281816121410152818161408a015281816141060152818161441f01526144c80152615ef76000f3fe6080604052600436106103645760003560e01c80636352211e116101c6578063a642c032116100f7578063d675fee711610095578063e62f774f1161006f578063e62f774f14610a01578063e985e9c514610a21578063f2fde38b14610a6a578063f4c04ec014610a8a57600080fd5b8063d675fee7146109a2578063dd6044ee146109c2578063e30c3978146109e257600080fd5b8063bd3bf7f3116100d1578063bd3bf7f314610914578063c0dad79b14610948578063c87b56dd14610962578063d547741f1461098257600080fd5b8063a642c0321461089a578063ac9650d8146108c7578063b88d4fde146108f457600080fd5b80638456cb591161016457806391d148541161013e57806391d148541461083057806395d89b4114610850578063a217fddf14610865578063a22cb4651461087a57600080fd5b80638456cb59146107dc5780638da5cb5b146107f15780639188570b1461081057600080fd5b8063715018a6116101a0578063715018a61461077d57806372c06f5a1461079257806379ba5097146107a75780637dbf7ef0146107bc57600080fd5b80636352211e1461071d57806365a79c8d1461073d57806370a082311461075d57600080fd5b80632c20722c116102a05780633ccfd60b1161023e57806342966c681161021857806342966c68146106a457806350d331c2146106c45780635944c753146106e45780635c975abb1461070457600080fd5b80633ccfd60b1461065a5780633f4ba83a1461066f57806342842e0e1461068457600080fd5b806331fa47731161027a57806331fa4773146105c657806333fd20e0146105e657806335c133d11461060657806336568abe1461063a57600080fd5b80632c20722c146105665780632ed1fd80146105865780632f2ff15d146105a657600080fd5b80630c267ed61161030d57806322aba670116102e757806322aba670146104b757806323b872dd146104d7578063248a9ca3146104f75780632a55205a1461052757600080fd5b80630c267ed614610461578063162094c41461047457806318160ddd1461049457600080fd5b806306fdde031161033e57806306fdde03146103e7578063081812fc14610409578063095ea7b31461044157600080fd5b806301ffc9a71461037057806304634d8d146103a55780630690a78d146103c757600080fd5b3661036b57005b600080fd5b34801561037c57600080fd5b5061039061038b366004614d48565b610aaa565b60405190151581526020015b60405180910390f35b3480156103b157600080fd5b506103c56103c0366004614d91565b610ae4565b005b3480156103d357600080fd5b506103c56103e2366004614dc8565b610afc565b3480156103f357600080fd5b506103fc610bd5565b60405161039c9190614e94565b34801561041557600080fd5b50610429610424366004614ea7565b610c67565b6040516001600160a01b03909116815260200161039c565b34801561044d57600080fd5b506103c561045c366004614ec0565b610cda565b6103c561046f366004614fdd565b610dbe565b34801561048057600080fd5b506103c561048f366004614dc8565b611215565b3480156104a057600080fd5b506104a961128e565b60405190815260200161039c565b3480156104c357600080fd5b506103c56104d2366004615059565b6112be565b3480156104e357600080fd5b506103c56104f23660046150dc565b611451565b34801561050357600080fd5b506104a9610512366004614ea7565b600090815260c9602052604090206001015490565b34801561053357600080fd5b50610547610542366004615118565b611482565b604080516001600160a01b03909316835260208301919091520161039c565b34801561057257600080fd5b506103c561058136600461513a565b611587565b34801561059257600080fd5b506103c56105a136600461515f565b611628565b3480156105b257600080fd5b506103c56105c136600461519f565b611783565b3480156105d257600080fd5b506103c56105e1366004615210565b6117a8565b3480156105f257600080fd5b506103c5610601366004614ea7565b6117c9565b34801561061257600080fd5b506104297f000000000000000000000000000000000000000000000000000000000000000081565b34801561064657600080fd5b506103c561065536600461519f565b61188a565b34801561066657600080fd5b506103c5611904565b34801561067b57600080fd5b506103c5611927565b34801561069057600080fd5b506103c561069f3660046150dc565b611939565b3480156106b057600080fd5b506103c56106bf366004614ea7565b611954565b3480156106d057600080fd5b506104a96106df366004614ea7565b611a06565b3480156106f057600080fd5b506103c56106ff36600461515f565b611a2c565b34801561071057600080fd5b506101915460ff16610390565b34801561072957600080fd5b50610429610738366004614ea7565b611a4e565b34801561074957600080fd5b506103c5610758366004615260565b611aad565b34801561076957600080fd5b506104a9610778366004615328565b611bfc565b34801561078957600080fd5b506103c5611c82565b34801561079e57600080fd5b506103c5611c94565b3480156107b357600080fd5b506103c5611d05565b3480156107c857600080fd5b506103c56107d736600461513a565b611d80565b3480156107e857600080fd5b506103c561200d565b3480156107fd57600080fd5b5061012d546001600160a01b0316610429565b34801561081c57600080fd5b506103c561082b366004615328565b61201f565b34801561083c57600080fd5b5061039061084b36600461519f565b61209f565b34801561085c57600080fd5b506103fc6120ca565b34801561087157600080fd5b506104a9600081565b34801561088657600080fd5b506103c5610895366004615343565b6120d9565b3480156108a657600080fd5b506108ba6108b5366004614ea7565b6121b8565b60405161039c919061536f565b3480156108d357600080fd5b506108e76108e2366004615210565b612280565b60405161039c91906153b9565b34801561090057600080fd5b506103c561090f36600461541b565b612375565b34801561092057600080fd5b506104297f000000000000000000000000000000000000000000000000000000000000000081565b34801561095457600080fd5b506097546103909060ff1681565b34801561096e57600080fd5b506103fc61097d366004614ea7565b6123a7565b34801561098e57600080fd5b506103c561099d36600461519f565b6124ce565b3480156109ae57600080fd5b506103c56109bd366004614ea7565b6124f3565b3480156109ce57600080fd5b506103c56109dd366004615483565b612568565b3480156109ee57600080fd5b5061015f546001600160a01b0316610429565b348015610a0d57600080fd5b506103c5610a1c366004615328565b6127c4565b348015610a2d57600080fd5b50610390610a3c366004615545565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610a7657600080fd5b506103c5610a85366004615328565b6127d7565b348015610a9657600080fd5b506103c5610aa536600461556f565b61284a565b60006001600160e01b03198216630df23fff60e01b1480610acf5750610acf826128eb565b80610ade5750610ade8261293b565b92915050565b610aee600061297b565b610af88282612998565b5050565b610b13600080516020615e7b83398151915261297b565b82610b1d81612a7b565b610b3a5760405163eb49290360e01b815260040160405180910390fd5b610b7a8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612abb92505050565b600084815261022d602052604090205415610bcf57610bcf8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3392505050565b50505050565b606060658054610be490615594565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090615594565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b6000610c7282612c0c565b610cbe5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064015b60405180910390fd5b506000908152606960205260409020546001600160a01b031690565b8160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b118015610d18575060975460ff16155b15610daf57604051633185c44d60e21b81523060048201526001600160a01b0382811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063c617113490604401602060405180830381865afa158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad91906155c8565b505b610db98383612c29565b505050565b610dc6612d39565b610ddb8686868664ffffffffff168686612d80565b6000807f00000000000000000000000000000000000000000000000000000000000000006040517fff0784f4000000000000000000000000000000000000000000000000000000008152306004820152602481018a90526001600160a01b03919091169063ff0784f49060440160c060405180830381865afa158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8991906155e5565b9150915060007f000000000000000000000000000000000000000000000000000000000000000082608001516001600160601b0316610ec89190615695565b9050610ed481886156a8565b3414610ef35760405163ab0a033b60e01b815260040160405180910390fd5b600061022e60008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060400160405290816000820160009054906101000a900464ffffffffff1664ffffffffff1664ffffffffff1681526020016000820160059054906101000a900464ffffffffff1664ffffffffff1664ffffffffff16815250509050600061023060008c8152602001908152602001600020600086815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600061022d60008d8152602001908152602001600020549050600061100d8b8e8489886000015164ffffffffff16888f612eb1565b905060405180604001604052808286600001510164ffffffffff1681526020018b64ffffffffff1681525061022e60008f815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff1602179055509050508061023060008f8152602001908152602001600020600089815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508061022d60008f8152602001908152602001600020600082825401925050819055506111488c8e8385613044565b8b6001600160a01b0316878e7fe7ffccd3613f31162a107541c97a5e4d366eb71ad77d4a6b41dad5f3538d039884858701604051611190929190918252602082015260400190565b60405180910390a46111ed6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083026131a3565b8a81101561120657808b03850261120433826131a3565b505b50505050505050505050505050565b61122c600080516020615e7b83398151915261297b565b600083815261025c60205260409020611246828483615705565b5061125083612c0c565b15610db9576040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7906020015b60405180910390a1505050565b600060015b6102295481116112ba576112a681611a06565b6112b09083615695565b9150600101611293565b5090565b6112d5600080516020615e7b83398151915261297b565b836112df81612a7b565b6112fc5760405163eb49290360e01b815260040160405180910390fd5b6000829003611394577f00000000000000000000000000000000000000000000000000000000000000006040516322a4b15b60e11b815230600482015260248101879052604481018690526001600160a01b03919091169063454962b690606401600060405180830381600087803b15801561137757600080fd5b505af115801561138b573d6000803e3d6000fd5b5050505061144a565b7f0000000000000000000000000000000000000000000000000000000000000000600086815261022d602090815260408083205461022a909252918290205491516322d0be1160e01b81526001600160a01b0393909316926322d0be11926114179230928b928b928b928b92600160281b900464ffffffffff1690600401615870565b600060405180830381600087803b15801561143157600080fd5b505af1158015611445573d6000803e3d6000fd5b505050505b5050505050565b61145b33826132bc565b6114775760405162461bcd60e51b8152600401610cb5906158c0565b610db983838361333b565b600082815261025b602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916115525760006114d3866134b1565b600081815261022f60209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b0316918301919091529093509091506115505760408051808201909152610228546001600160a01b0381168252600160a01b90046001600160601b0316602082015291505b505b8051602082015190935061271090611573906001600160601b0316866156a8565b61157d9190615923565b9150509250929050565b61159e600080516020615e7b83398151915261297b565b816115a881612a7b565b6115c55760405163eb49290360e01b815260040160405180910390fd5b600083815261022a6020908152604091829020805464ffffffffff191664ffffffffff8616908117909155915191825284917fd5326a6054dc610ac8935df7ac3f2a773f84d8c60fb33ccf2010f0fef6b4930a91015b60405180910390a2505050565b61163f600080516020615e7b83398151915261297b565b8261164981612a7b565b6116665760405163eb49290360e01b815260040160405180910390fd5b816001600160601b03166127108111156116935760405163d28e6cff60e01b815260040160405180910390fd5b6001600160a01b0384166116f457600085815261022f6020908152604080832083905580518381529182019290925286917f01f7eea6f4ba148de2d620a5591f54b4d17e63b7d6438a6ed3ab01aae9593eee910160405180910390a261144a565b6040805180820182526001600160a01b038681168083526001600160601b03878116602080860182815260008d815261022f835288902096519051909316600160a01b02929094169190911790935583519081529081019190915286917f01f7eea6f4ba148de2d620a5591f54b4d17e63b7d6438a6ed3ab01aae9593eee910160405180910390a25050505050565b600082815260c9602052604090206001015461179e8161297b565b610db98383613514565b6117bf600080516020615e7b83398151915261297b565b610af8828261359a565b6117e0600080516020615e7b83398151915261297b565b806117ea81612a7b565b6118075760405163eb49290360e01b815260040160405180910390fd5b600082815261022a6020526040902054600160581b900460ff161561183f57604051631a4ae4f360e21b815260040160405180910390fd5b600082815261022a6020526040808220805460ff60581b1916600160581b1790555183917f677fde77e48b5086920a2acd2f6578cff669f61b52dcf91a3c5e27abd5d1706791a25050565b6001600160a01b03811633146118fa5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610cb5565b610af882826138ea565b61190e600061297b565b61022754611925906001600160a01b0316476131a3565b565b611931600061297b565b611925613951565b610db983838360405180602001604052806000815250612375565b61195e33826132bc565b61197b5760405163390cdd9b60e21b815260040160405180910390fd5b6000611986826134b1565b600081815261022a6020526040902054909150600160501b900460ff166119c057604051630da38f0160e41b815260040160405180910390fd5b6119c9826139a4565b600082815261025960209081526040808320805460ff1916600117905583835261022c90915281208054916119fd83615937565b91905055505050565b600081815261022c602090815260408083205461022d909252822054610ade9190615950565b611a43600080516020615e7b83398151915261297b565b610db9838383613a3d565b600080611a5a83613b50565b90506001600160a01b038116610ade5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610cb5565b600054610100900460ff1615808015611acd5750600054600160ff909116105b80611ae75750303b158015611ae7575060005460ff166001145b611b4a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610cb5565b6000805460ff191660011790558015611b6d576000805461ff0019166101001790555b611b778888613c27565b611b8086613c31565b611b8982613c61565b611b93848461359a565b6001600160601b03851615611bac57611bac8686612998565b8015611bf2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60006001600160a01b038216611c665760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610cb5565b506001600160a01b031660009081526068602052604090205490565b611c8a613c91565b6119256000613cec565b611c9d33613d06565b611cba57604051634755657960e01b815260040160405180910390fd5b6097805460ff81161560ff1990911681179091556040518181527fd8c469bcb7a4be6d69103a5fdb65991249a95423350dc583495ccf5e7c28a88d906020015b60405180910390a150565b61015f5433906001600160a01b03168114611d745760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610cb5565b611d7d81613cec565b50565b611d97600080516020615e7b83398151915261297b565b81611da181612a7b565b611dbe5760405163eb49290360e01b815260040160405180910390fd5b8164ffffffffff16600003611de6576040516353f9e27b60e01b815260040160405180910390fd5b600083815261022a6020526040902054611e0d90600160281b900464ffffffffff16613d40565b8264ffffffffff1610611e33576040516353f9e27b60e01b815260040160405180910390fd5b600083815261022d602052604090205464ffffffffff83161015611e6a5760405163531386e160e11b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516319324e8560e31b8152306004820152602481018690526001600160a01b03919091169063c99274289060440160c060405180830381865afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe91906155e5565b805190925064ffffffffff161580159150611f37575042816020015164ffffffffff16101580611f375750602081015164ffffffffff16155b15611f9b57806060015164ffffffffff16600003611f6857604051635d3cc31b60e01b815260040160405180910390fd5b806060015164ffffffffff168364ffffffffff161015611f9b57604051635d3cc31b60e01b815260040160405180910390fd5b600084815261022a6020908152604091829020805469ffffffffff00000000001916600160281b64ffffffffff881690810291909117909155915191825285917faec45f6ac9c6eff7c48277895ee5bfcddc83ef921ce67de1131588b3d459574591015b60405180910390a250505050565b612017600061297b565b611925613d79565b612029600061297b565b6001600160a01b0381166120505760405163d92e233d60e01b815260040160405180910390fd5b61022780546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e9a2b03c288d52a74c3df0782024fc542900a071656ab80d6a0a9fa7dac4efb90602001611cfa565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060668054610be490615594565b8160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b118015612117575060975460ff16155b156121ae57604051633185c44d60e21b81523060048201526001600160a01b0382811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063c617113490604401602060405180830381865afa158015612188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ac91906155c8565b505b610db98383613db7565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152816121ed81612a7b565b61220a5760405163eb49290360e01b815260040160405180910390fd5b600083815261022a6020908152604091829020825160a081018452905464ffffffffff8082168352600160281b8204169282019290925260ff600160501b83048116151593820193909352600160581b8204831615156060820152600160601b9091049091161515608082015291505b50919050565b60608167ffffffffffffffff81111561229b5761229b614efd565b6040519080825280602002602001820160405280156122ce57816020015b60608152602001906001900390816122b95790505b50905060005b8281101561236e5761233e308585848181106122f2576122f2615963565b90506020028101906123049190615979565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613dc292505050565b82828151811061235057612350615963565b6020026020010181905250808061236690615937565b9150506122d4565b5092915050565b61237f33836132bc565b61239b5760405162461bcd60e51b8152600401610cb5906158c0565b610bcf84848484613dee565b60606123b282612c0c565b6123cf5760405163677510db60e11b815260040160405180910390fd5b600082815261025c6020526040812080546123e990615594565b80601f016020809104026020016040519081016040528092919081815260200182805461241590615594565b80156124625780601f1061243757610100808354040283529160200191612462565b820191906000526020600020905b81548152906001019060200180831161244557829003601f168201915b505050505090508051600003610ade57600061247d846134b1565b6000818152610231602052604090209091506124a56124a0633b9aca00876159c0565b613e21565b6040516020016124b69291906159d4565b60405160208183030381529060405292505050919050565b600082815260c960205260409020600101546124e98161297b565b610db983836138ea565b61250a600080516020615e7b83398151915261297b565b8061251481612a7b565b6125315760405163eb49290360e01b815260040160405180910390fd5b600082815261022d60205260409020541561255f57604051632d1f2ea160e11b815260040160405180910390fd5b610af882613eb4565b612580600080516020615e7b8339815191523361209f565b6125ad576125ad7fd8d9f31cbc479b1a40a972bfa9e3c5573c1526777b06ee93042d7a96dde464ab61297b565b826125b781612a7b565b6125d45760405163eb49290360e01b815260040160405180910390fd5b6125dc612d39565b815180158061260a57507f000000000000000000000000000000000000000000000000000000000000000081115b156126285760405163ce43e37760e01b815260040160405180910390fd5b600061263485836156a8565b600087815261022d602090815260408083205461022a909252909120549192509061266c90600160281b900464ffffffffff16613d40565b6126768284615695565b11156126955760405163740f8e6d60e11b815260040160405180910390fd5b61269f8282615695565b600088815261022d60205260408120919091555b60008682815181106126c7576126c7615963565b602002602001015190506126dd818a8a86613044565b50908601906001018381106126b3577f000000000000000000000000000000000000000000000000000000000000000060405163169655c960e21b8152306004820152602481018a90526001600160a01b039190911690635a59572490604401602060405180830381865afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190615a5b565b887f6b4728fec96e4c21cab0a9cf4686ce08822520c9647e5589e6038ef914e599df888a866040516127b293929190615a74565b60405180910390a35050505050505050565b6127cc613c91565b611d7d600082613514565b6127df613c91565b61015f80546001600160a01b0383166001600160a01b0319909116811790915561281261012d546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b612861600080516020615e7b83398151915261297b565b8161286b81612a7b565b6128885760405163eb49290360e01b815260040160405180910390fd5b600083815261022a6020526040908190208054841515600160501b026aff00000000000000000000199091161790555183907f0de0a140384f9fa03ed8441d1d4f45373f3bf77da8bb2c593a0a3908043d40339061161b90851515815260200190565b60006001600160e01b031982166380ac58cd60e01b148061291c57506001600160e01b03198216635b5e139f60e01b145b80610ade57506301ffc9a760e01b6001600160e01b0319831614610ade565b60006001600160e01b0319821663b01039a160e01b148061296c57506001600160e01b0319821663152a902d60e11b145b80610ade5750610ade82613ef8565b61012d546001600160a01b03163314611d7d57611d7d8133613f03565b806001600160601b03166127108111156129c55760405163d28e6cff60e01b815260040160405180910390fd5b6001600160a01b038316612a125760006102288190556040805182815260208101929092527f378e0d79d5bc01ff46b21ccbdabc124751f2f6880425e873742b04c2e3a65c6c9101611281565b6040805180820182526001600160a01b0385168082526001600160601b0385166020928301819052600160a01b81028217610228558351918252918101919091527f378e0d79d5bc01ff46b21ccbdabc124751f2f6880425e873742b04c2e3a65c6c9101611281565b6000811580612a8c57506102295482115b80612aa65750600082815261022b602052604090205460ff165b15612ab357506000919050565b506001919050565b8051600003612add57604051633ba0191160e01b815260040160405180910390fd5b600082815261023160205260409020612af68282615aca565b50817f9b769a1125f1947a11ef5a3d43527594ee72858f8c256e64556ab79056b6d31582604051612b279190614e94565b60405180910390a25050565b600082815261022d60205260409020546001819003612b93577ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7612b7684613f5c565b612b81906001615695565b60405190815260200160405180910390a15b600083815261022d602052604090205460011015610db9576000612bb684613f5c565b90507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c612be4826001615695565b612bee8484615695565b6040805192835260208301919091520160405180910390a150505050565b600080612c1883613b50565b6001600160a01b0316141592915050565b6000612c3482611a4e565b9050806001600160a01b0316836001600160a01b031603612ca15760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610cb5565b336001600160a01b0382161480612cbd5750612cbd8133610a3c565b612d2f5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610cb5565b610db98383613f6c565b6101915460ff16156119255760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610cb5565b600086815261022a6020526040902054600160581b900460ff16612ea95743831115612dbf5760405163311a269560e21b815260040160405180910390fd5b43612dcb604b85615695565b1015612dea57604051630819bdcd60e01b815260040160405180910390fd5b600086815261022e602090815260408083206001600160a01b0389168452909152902054600160281b900464ffffffffff168311612e3b5760405163900bb2c960e01b815260040160405180910390fd5b6000612e4a8787878787613fda565b90506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612e808284614060565b6001600160a01b031614612ea757604051638baa579f60e01b815260040160405180910390fd5b505b505050505050565b868115612ef457818310612ed857604051632b2c62f760e21b815260040160405180910390fd5b6000612ee48484615950565b905080821115612ef2578091505b505b604085015164ffffffffff1615612f5957846040015164ffffffffff168310612f30576040516301a36a3160e31b815260040160405180910390fd5b600083866040015164ffffffffff16612f499190615950565b905080821115612f57578091505b505b6000612f64886121b8565b805190915064ffffffffff1615612fc457805164ffffffffff168510612f9d57604051631ba1ee7960e21b815260040160405180910390fd5b8051600090612fb490879064ffffffffff16615950565b905080831115612fc2578092505b505b606086015164ffffffffff166000819003612ffc57507f00000000000000000000000000000000000000000000000000000000000000005b80881061301c576040516345b1552d60e01b815260040160405180910390fd5b60006130288983615950565b905080841115613036578093505b505050979650505050505050565b81158061307057507f000000000000000000000000000000000000000000000000000000000000000082115b1561308e5760405163011674e560e71b815260040160405180910390fd5b60008161309a85613f5c565b6130a49190615695565b6130af906001615695565b90506130be6000868386614084565b600081815261025a6020526040812080546001600160a01b0319166001600160a01b03881617905581906130f28583615695565b90505b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48160010191508082106130f5576001600160a01b0387163b15613194578291505b61316a60008884604051806020016040528060008152506141db565b6131865760405162461bcd60e51b8152600401610cb590615b8a565b81600101915080821061314e575b61319e87866142dc565b612ea7565b804710156131f35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610cb5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613240576040519150601f19603f3d011682016040523d82523d6000602084013e613245565b606091505b5050905080610db95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610cb5565b6000806132c883611a4e565b9050806001600160a01b0316846001600160a01b0316148061330f57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b8061333357506000838152606960205260409020546001600160a01b038581169116145b949350505050565b826001600160a01b031661334e82611a4e565b6001600160a01b0316146133b25760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610cb5565b6001600160a01b0382166134145760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610cb5565b6134218383836001614084565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000633b9aca008210156134d85760405163677510db60e11b815260040160405180910390fd5b6134e6633b9aca00836159c0565b6000036135065760405163677510db60e11b815260040160405180910390fd5b610ade633b9aca0083615923565b61351e828261209f565b610af857600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556135563390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6102295460005b828110156138e1577f00000000000000000000000000000000000000000000000000000000000000008484838181106135dc576135dc615963565b90506020028101906135ee9190615bdc565b6135ff906060810190604001615bfc565b64ffffffffff161115613625576040516374690a7960e01b815260040160405180910390fd5b600190910190600084848381811061363f5761363f615963565b90506020028101906136519190615bdc565b6020018036038101906136649190615c19565b600084815261022a6020908152604091829020835181549285015193850151606086015160808701511515600160601b026cff00000000000000000000000019911515600160581b0260ff60581b19931515600160501b02939093166bffff000000000000000000001964ffffffffff988916600160281b0269ffffffffffffffffffff19909816989095169790971795909517929092169490941793909317929092161790559050827faf1874b81c219a8f1fd4020887b21deb5761445c77c2ad850b65c7303885354886868581811061374157613741615963565b90506020028101906137539190615bdc565b6040516137639135908590615c93565b60405180910390a26137db8386868581811061378157613781615963565b90506020028101906137939190615bdc565b6137a19060c0810190615979565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612abb92505050565b60008585848181106137ef576137ef615963565b90506020028101906138019190615bdc565b61380f9060e0810190615ce3565b905011156138d8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166322d0be113085600089898881811061385c5761385c615963565b905060200281019061386e9190615bdc565b61387c9060e0810190615ce3565b600088602001516040518863ffffffff1660e01b81526004016138a59796959493929190615870565b600060405180830381600087803b1580156138bf57600080fd5b505af11580156138d3573d6000803e3d6000fd5b505050505b506001016135a1565b50610229555050565b6138f4828261209f565b15610af857600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61395961430d565b610191805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006139af82611a4e565b90506139bf816000846001614084565b600082815260696020908152604080832080546001600160a01b03199081169091556001600160a01b03851680855260688452828520805460001901905586855260679093528184208054909116905551849291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b806001600160601b0316612710811115613a6a5760405163d28e6cff60e01b815260040160405180910390fd5b6001600160a01b038316613acb57600084815261025b6020908152604080832083905580518381529182019290925285917f4155153cf804153dcebc59020dc517402922103c1f7242f5e9bf3e5e2d6fc619910160405180910390a2610bcf565b6040805180820182526001600160a01b038581168083526001600160601b03868116602080860182815260008c815261025b835288902096519051909316600160a01b02929094169190911790935583519081529081019190915285917f4155153cf804153dcebc59020dc517402922103c1f7242f5e9bf3e5e2d6fc6199101611fff565b6000818152610259602052604081205460ff1615613b7057506000919050565b6000828152606760205260409020546001600160a01b03168015613b945792915050565b6000613b9f846134b1565b90506000613bac82613f5c565b600083815261022d6020526040902054909150613bc99082615695565b851115613bdb57506000949350505050565b5b6001600160a01b038316158015613bf257508085115b15613c1e57600085815261025a6020526040902054600019909501946001600160a01b03169250613bdc565b50909392505050565b610af88282614360565b600054610100900460ff16613c585760405162461bcd60e51b8152600401610cb590615d2c565b611d7d81614379565b600054610100900460ff16613c885760405162461bcd60e51b8152600401610cb590615d2c565b611d7d816143ec565b61012d546001600160a01b031633146119255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cb5565b61015f80546001600160a01b0319169055611d7d81614530565b6000613d1b61012d546001600160a01b031690565b6001600160a01b0316826001600160a01b03161480610ade5750610ade60008361209f565b600081600003613d7157507f0000000000000000000000000000000000000000000000000000000000000000919050565b50805b919050565b613d81612d39565b610191805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586139873390565b610af8338383614583565b6060613de78383604051806060016040528060278152602001615e9b60279139614651565b9392505050565b613df984848461333b565b613e05848484846141db565b610bcf5760405162461bcd60e51b8152600401610cb590615b8a565b60606000613e2e836146c9565b600101905060008167ffffffffffffffff811115613e4e57613e4e614efd565b6040519080825280601f01601f191660200182016040528015613e78576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613e8257509392505050565b600081815261022b6020526040808220805460ff191660011790555182917fceb5e263cb1044892eb4317ae23f824f0724446b3e2315d6ba5d6a6f203662d891a250565b6000610ade826147a1565b613f0d828261209f565b610af857613f1a816147c6565b613f258360206147d8565b604051602001613f36929190615d77565b60408051601f198184030181529082905262461bcd60e51b8252610cb591600401614e94565b6000610ade633b9aca00836156a8565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190613fa182611a4e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b604080517f6333dac33c8797dfc272d5fcb15ebb30435be33c66a3e1fc21076e982ecd97a660208201529081018690526001600160a01b03851660608201526080810184905260a0810183905260c0810182905260009081906140559060e00160405160208183030381529060405280519060200120614974565b979650505050505050565b600080600061406f8585614a3c565b9150915061407c81614a81565b509392505050565b338460007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b1180156140c3575060975460ff16155b1561417357806001600160a01b0316826001600160a01b03161461417357604051633185c44d60e21b81523060048201526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063c617113490604401602060405180830381865afa15801561414d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417191906155c8565b505b6001600160a01b038616158061419057506001600160a01b038516155b612ea95761022a60006141a2866134b1565b8152602081019190915260400160002054600160601b900460ff1615612ea95760405163dc8d8db760e01b815260040160405180910390fd5b60006001600160a01b0384163b156142d157604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061421f903390899088908890600401615dec565b6020604051808303816000875af192505050801561425a575060408051601f3d908101601f1916820190925261425791810190615e1e565b60015b6142b7573d808015614288576040519150601f19603f3d011682016040523d82523d6000602084013e61428d565b606091505b5080516000036142af5760405162461bcd60e51b8152600401610cb590615b8a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050613333565b506001949350505050565b6001600160a01b03821660009081526068602052604081208054839290614304908490615695565b90915550505050565b6101915460ff166119255760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610cb5565b606561436c8382615aca565b506066610db98282615aca565b600054610100900460ff166143a05760405162461bcd60e51b8152600401610cb590615d2c565b6001600160a01b0381166143c75760405163d92e233d60e01b815260040160405180910390fd5b61022780546001600160a01b0319166001600160a01b038316179055611d7d81613cec565b600054610100900460ff166144135760405162461bcd60e51b8152600401610cb590615d2c565b80801561444a575060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b115b801561447e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b1561452057604051633e9f1edf60e11b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000001690637d3e3dbe90604401600060405180830381600087803b15801561450c57600080fd5b505af115801561144a573d6000803e3d6000fd5b6097805460ff1916600117905550565b61012d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b0316036145e45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610cb5565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600080856001600160a01b03168560405161466e9190615e3b565b600060405180830381855af49150503d80600081146146a9576040519150601f19603f3d011682016040523d82523d6000602084013e6146ae565b606091505b50915091506146bf86838387614bcb565b9695505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106147085772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614734576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061475257662386f26fc10000830492506010015b6305f5e100831061476a576305f5e100830492506008015b612710831061477e57612710830492506004015b60648310614790576064830492506002015b600a8310610ade5760010192915050565b60006001600160e01b03198216637965db0b60e01b1480610ade5750610ade826128eb565b6060610ade6001600160a01b03831660145b606060006147e78360026156a8565b6147f2906002615695565b67ffffffffffffffff81111561480a5761480a614efd565b6040519080825280601f01601f191660200182016040528015614834576020820181803683370190505b509050600360fc1b8160008151811061484f5761484f615963565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061487e5761487e615963565b60200101906001600160f81b031916908160001a90535060006148a28460026156a8565b6148ad906001615695565b90505b6001811115614925576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106148e1576148e1615963565b1a60f81b8282815181106148f7576148f7615963565b60200101906001600160f81b031916908160001a90535060049490941c9361491e81615e4d565b90506148b0565b508315613de75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cb5565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f36cb08f6aafe2399767bf40e9642429d7535f40e61bd81428cad09095c5d337d918101919091527fb4bcb154e38601c389396fa918314da42d4626f13ef6d0ceb07e5f5d26b2fbc360608201524660808201523060a0820152600090819060c001604051602081830303815290604052805190602001209050613de7818460405161190160f01b8152600281019290925260228201526042902090565b6000808251604103614a725760208301516040840151606085015160001a614a6687828585614c44565b94509450505050614a7a565b506000905060025b9250929050565b6000816004811115614a9557614a95615e64565b03614a9d5750565b6001816004811115614ab157614ab1615e64565b03614afe5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610cb5565b6002816004811115614b1257614b12615e64565b03614b5f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610cb5565b6003816004811115614b7357614b73615e64565b03611d7d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610cb5565b60608315614c3a578251600003614c33576001600160a01b0385163b614c335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cb5565b5081613333565b6133338383614d08565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614c7b5750600090506003614cff565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614ccf573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614cf857600060019250925050614cff565b9150600090505b94509492505050565b815115614d185781518083602001fd5b8060405162461bcd60e51b8152600401610cb59190614e94565b6001600160e01b031981168114611d7d57600080fd5b600060208284031215614d5a57600080fd5b8135613de781614d32565b80356001600160a01b0381168114613d7457600080fd5b6001600160601b0381168114611d7d57600080fd5b60008060408385031215614da457600080fd5b614dad83614d65565b91506020830135614dbd81614d7c565b809150509250929050565b600080600060408486031215614ddd57600080fd5b83359250602084013567ffffffffffffffff80821115614dfc57600080fd5b818601915086601f830112614e1057600080fd5b813581811115614e1f57600080fd5b876020828501011115614e3157600080fd5b6020830194508093505050509250925092565b60005b83811015614e5f578181015183820152602001614e47565b50506000910152565b60008151808452614e80816020860160208601614e44565b601f01601f19169290920160200192915050565b602081526000613de76020830184614e68565b600060208284031215614eb957600080fd5b5035919050565b60008060408385031215614ed357600080fd5b614edc83614d65565b946020939093013593505050565b64ffffffffff81168114611d7d57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715614f3657614f36614efd565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f6557614f65614efd565b604052919050565b600082601f830112614f7e57600080fd5b813567ffffffffffffffff811115614f9857614f98614efd565b614fab601f8201601f1916602001614f3c565b818152846020838601011115614fc057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215614ff657600080fd5b8635955061500660208801614d65565b945060408701359350606087013561501d81614eea565b92506080870135915060a087013567ffffffffffffffff81111561504057600080fd5b61504c89828a01614f6d565b9150509295509295509295565b6000806000806060858703121561506f57600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561509557600080fd5b818701915087601f8301126150a957600080fd5b8135818111156150b857600080fd5b88602060a0830285010111156150cd57600080fd5b95989497505060200194505050565b6000806000606084860312156150f157600080fd5b6150fa84614d65565b925061510860208501614d65565b9150604084013590509250925092565b6000806040838503121561512b57600080fd5b50508035926020909101359150565b6000806040838503121561514d57600080fd5b823591506020830135614dbd81614eea565b60008060006060848603121561517457600080fd5b8335925061518460208501614d65565b9150604084013561519481614d7c565b809150509250925092565b600080604083850312156151b257600080fd5b823591506151c260208401614d65565b90509250929050565b60008083601f8401126151dd57600080fd5b50813567ffffffffffffffff8111156151f557600080fd5b6020830191508360208260051b8501011115614a7a57600080fd5b6000806020838503121561522357600080fd5b823567ffffffffffffffff81111561523a57600080fd5b615246858286016151cb565b90969095509350505050565b8015158114611d7d57600080fd5b600080600080600080600060c0888a03121561527b57600080fd5b873567ffffffffffffffff8082111561529357600080fd5b61529f8b838c01614f6d565b985060208a01359150808211156152b557600080fd5b6152c18b838c01614f6d565b97506152cf60408b01614d65565b965060608a013591506152e182614d7c565b909450608089013590808211156152f757600080fd5b506153048a828b016151cb565b90945092505060a088013561531881615252565b8091505092959891949750929550565b60006020828403121561533a57600080fd5b613de782614d65565b6000806040838503121561535657600080fd5b61535f83614d65565b91506020830135614dbd81615252565b60a08101610ade828464ffffffffff808251168352806020830151166020840152506040810151151560408301526060810151151560608301526080810151151560808301525050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561540e57603f198886030184526153fc858351614e68565b945092850192908501906001016153e0565b5092979650505050505050565b6000806000806080858703121561543157600080fd5b61543a85614d65565b935061544860208601614d65565b925060408501359150606085013567ffffffffffffffff81111561546b57600080fd5b61547787828801614f6d565b91505092959194509250565b60008060006060848603121561549857600080fd5b833592506020808501359250604085013567ffffffffffffffff808211156154bf57600080fd5b818701915087601f8301126154d357600080fd5b8135818111156154e5576154e5614efd565b8060051b91506154f6848301614f3c565b818152918301840191848101908a84111561551057600080fd5b938501935b838510156155355761552685614d65565b82529385019390850190615515565b8096505050505050509250925092565b6000806040838503121561555857600080fd5b61556183614d65565b91506151c260208401614d65565b6000806040838503121561558257600080fd5b823591506020830135614dbd81615252565b600181811c908216806155a857607f821691505b60208210810361227a57634e487b7160e01b600052602260045260246000fd5b6000602082840312156155da57600080fd5b8151613de781615252565b60008082840360c08112156155f957600080fd5b8351925060a0601f198201121561560f57600080fd5b50615618614f13565b602084015161562681614eea565b8152604084015161563681614eea565b6020820152606084015161564981614eea565b6040820152608084015161565c81614eea565b606082015260a084015161566f81614d7c565b6080820152919491935090915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ade57610ade61567f565b8082028115828204841417610ade57610ade61567f565b601f821115610db957600081815260208120601f850160051c810160208610156156e65750805b601f850160051c820191505b81811015612ea9578281556001016156f2565b67ffffffffffffffff83111561571d5761571d614efd565b6157318361572b8354615594565b836156bf565b6000601f841160018114615765576000851561574d5750838201355b600019600387901b1c1916600186901b17835561144a565b600083815260209020601f19861690835b828110156157965786850135825560209485019460019092019101615776565b50868210156157b35760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183526000602080850194508260005b858110156158655781356157e881614eea565b64ffffffffff9081168852828401359061580182614eea565b908116888501526040908382013561581881614eea565b818116838b015250606091508184013561583181614eea565b169088015260808281013561584581614d7c565b6001600160601b03169088015260a09687019691909101906001016157d5565b509495945050505050565b6001600160a01b038816815286602082015285604082015260c06060820152600061589f60c0830186886157c5565b905083608083015264ffffffffff831660a083015298975050505050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826159325761593261590d565b500490565b6000600182016159495761594961567f565b5060010190565b81810381811115610ade57610ade61567f565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261599057600080fd5b83018035915067ffffffffffffffff8211156159ab57600080fd5b602001915036819003821315614a7a57600080fd5b6000826159cf576159cf61590d565b500690565b60008084546159e281615594565b600182811680156159fa5760018114615a0f57615a3e565b60ff1984168752821515830287019450615a3e565b8860005260208060002060005b85811015615a355781548a820152908401908201615a1c565b50505082870194505b505050508351615a52818360208801614e44565b01949350505050565b600060208284031215615a6d57600080fd5b5051919050565b606080825284519082018190526000906020906080840190828801845b82811015615ab65781516001600160a01b031684529284019290840190600101615a91565b505050908301949094525060400152919050565b815167ffffffffffffffff811115615ae457615ae4614efd565b615af881615af28454615594565b846156bf565b602080601f831160018114615b2d5760008415615b155750858301515b600019600386901b1c1916600185901b178555612ea9565b600085815260208120601f198616915b82811015615b5c57888601518255948401946001909101908401615b3d565b5085821015615b7a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000823560fe19833603018112615bf257600080fd5b9190910192915050565b600060208284031215615c0e57600080fd5b8135613de781614eea565b600060a08284031215615c2b57600080fd5b615c33614f13565b8235615c3e81614eea565b81526020830135615c4e81614eea565b60208201526040830135615c6181615252565b60408201526060830135615c7481615252565b60608201526080830135615c8781615252565b60808201529392505050565b82815260c08101613de7602083018464ffffffffff808251168352806020830151166020840152506040810151151560408301526060810151151560608301526080810151151560808301525050565b6000808335601e19843603018112615cfa57600080fd5b83018035915067ffffffffffffffff821115615d1557600080fd5b602001915060a081023603821315614a7a57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615daf816017850160208801614e44565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615de0816028840160208801614e44565b01602801949350505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526146bf6080830184614e68565b600060208284031215615e3057600080fd5b8151613de781614d32565b60008251615bf2818460208701614e44565b600081615e5c57615e5c61567f565b506000190190565b634e487b7160e01b600052602160045260246000fdfe828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220254628dea83df290efec1aae64583bde789a947aa410a21f47aae5deeb93755564736f6c6343000813003300000000000000000000000000000000000000000000000022b1c8c1227a00000000000000000000000000008cfe71ab1c55ad27dafa51418c847848c9fc63480000000000000000000000007a6f5866f97034bb7153829bdaac1ffcb8facb71000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f051200000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000aaeb6d7670e522a718067333cd4e0000000000000000000000003cc6cdda760b79bafa08df41ecfa224f810dceb6