Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xF0644dB6d05217F8b8bB7ae9040706CdAF464BA9
Balance 0 ETH
Nonce 1
Code Size 23048 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

23048 bytes
0x6080604052600436106102c85760003560e01c806364aa0c7911610175578063b023b315116100dc578063df63c48c11610095578063f2266d7f1161006f578063f2266d7f14610a9a578063f2fde38b14610ac3578063f3e3882114610aec578063f617f92014610b17576102c8565b8063df63c48c14610a09578063e985e9c514610a34578063ec5ed89b14610a71576102c8565b8063b023b3151461090d578063b3a196e914610936578063b88d4fde14610961578063c87b56dd1461098a578063d5abeb01146109c7578063ddc3faf8146109f2576102c8565b806379268b071161012e57806379268b07146108325780638da5cb5b1461085b57806395d89b4114610886578063a0712d68146108b1578063a22cb465146108cd578063a8b80b93146108f6576102c8565b806364aa0c791461072457806365bd6aa31461074f578063672434821461078c5780636f8b44b0146107b557806370a08231146107de578063715018a61461081b576102c8565b806322f3e2d4116102345780633ccfd60b116101ed57806344d19d2b116101c757806344d19d2b146106565780634f6ccce71461068157806355f804b3146106be5780636352211e146106e7576102c8565b80633ccfd60b146105ed57806342842e0e1461060457806344a0d68a1461062d576102c8565b806322f3e2d4146104db57806323b872dd146105065780632a9053181461052f5780632ab91bba1461055a5780632ae0846d146105855780632f745c59146105b0576102c8565b806311a67e771161028657806311a67e77146103db57806312fb92e0146103f257806313faede61461042f578063143b237f1461045a57806318160ddd1461048557806318821400146104b0576102c8565b8062acf348146102cd57806301ffc9a7146102e457806306fdde0314610321578063081812fc1461034c578063095ea7b3146103895780630e0682d4146103b2575b600080fd5b3480156102d957600080fd5b506102e2610b33565b005b3480156102f057600080fd5b5061030b60048036038101906103069190613a31565b610bdb565b6040516103189190613a79565b60405180910390f35b34801561032d57600080fd5b50610336610c55565b6040516103439190613b2d565b60405180910390f35b34801561035857600080fd5b50610373600480360381019061036e9190613b85565b610ce7565b6040516103809190613bf3565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190613c3a565b610d6c565b005b3480156103be57600080fd5b506103d960048036038101906103d49190613c7a565b610e84565b005b3480156103e757600080fd5b506103f0611012565b005b3480156103fe57600080fd5b5061041960048036038101906104149190613c7a565b6110ba565b6040516104269190613a79565b60405180910390f35b34801561043b57600080fd5b506104446110da565b6040516104519190613cb6565b60405180910390f35b34801561046657600080fd5b5061046f6110e0565b60405161047c9190613a79565b60405180910390f35b34801561049157600080fd5b5061049a6110f3565b6040516104a79190613cb6565b60405180910390f35b3480156104bc57600080fd5b506104c5611100565b6040516104d29190613b2d565b60405180910390f35b3480156104e757600080fd5b506104f0611139565b6040516104fd9190613a79565b60405180910390f35b34801561051257600080fd5b5061052d60048036038101906105289190613cd1565b61114c565b005b34801561053b57600080fd5b506105446111ac565b6040516105519190613b2d565b60405180910390f35b34801561056657600080fd5b5061056f6111e5565b60405161057c9190613a79565b60405180910390f35b34801561059157600080fd5b5061059a6111f8565b6040516105a79190613b2d565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613c3a565b611286565b6040516105e49190613cb6565b60405180910390f35b3480156105f957600080fd5b5061060261132b565b005b34801561061057600080fd5b5061062b60048036038101906106269190613cd1565b61143a565b005b34801561063957600080fd5b50610654600480360381019061064f9190613b85565b61145a565b005b34801561066257600080fd5b5061066b6114e0565b6040516106789190613cb6565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a39190613b85565b6114e6565b6040516106b59190613cb6565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e09190613e59565b611557565b005b3480156106f357600080fd5b5061070e60048036038101906107099190613b85565b6115ed565b60405161071b9190613bf3565b60405180910390f35b34801561073057600080fd5b5061073961169f565b6040516107469190613cb6565b60405180910390f35b34801561075b57600080fd5b5061077660048036038101906107719190613c7a565b6116a5565b6040516107839190613f60565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae919061410d565b611753565b005b3480156107c157600080fd5b506107dc60048036038101906107d79190613b85565b611831565b005b3480156107ea57600080fd5b5061080560048036038101906108009190613c7a565b6118b7565b6040516108129190613cb6565b60405180910390f35b34801561082757600080fd5b5061083061196f565b005b34801561083e57600080fd5b5061085960048036038101906108549190613b85565b6119f7565b005b34801561086757600080fd5b50610870611a7d565b60405161087d9190613bf3565b60405180910390f35b34801561089257600080fd5b5061089b611aa6565b6040516108a89190613b2d565b60405180910390f35b6108cb60048036038101906108c69190613b85565b611b38565b005b3480156108d957600080fd5b506108f460048036038101906108ef91906141b1565b611cc2565b005b34801561090257600080fd5b5061090b611e43565b005b34801561091957600080fd5b50610934600480360381019061092f9190613e59565b611eeb565b005b34801561094257600080fd5b5061094b611f81565b6040516109589190613cb6565b60405180910390f35b34801561096d57600080fd5b5061098860048036038101906109839190614292565b611f87565b005b34801561099657600080fd5b506109b160048036038101906109ac9190613b85565b611fe9565b6040516109be9190613b2d565b60405180910390f35b3480156109d357600080fd5b506109dc612139565b6040516109e99190613cb6565b60405180910390f35b3480156109fe57600080fd5b50610a0761213f565b005b348015610a1557600080fd5b50610a1e6121e7565b604051610a2b9190613a79565b60405180910390f35b348015610a4057600080fd5b50610a5b6004803603810190610a569190614315565b6121fa565b604051610a689190613a79565b60405180910390f35b348015610a7d57600080fd5b50610a986004803603810190610a939190614355565b61228e565b005b348015610aa657600080fd5b50610ac16004803603810190610abc91906143ce565b61231c565b005b348015610acf57600080fd5b50610aea6004803603810190610ae59190613c7a565b6124a0565b005b348015610af857600080fd5b50610b01612598565b604051610b0e9190613a79565b60405180910390f35b610b316004803603810190610b2c919061442a565b6125ab565b005b610b3b612865565b73ffffffffffffffffffffffffffffffffffffffff16610b59611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba6906144a3565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c4e5750610c4d8261286d565b5b9050919050565b606060018054610c64906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054610c90906144f2565b8015610cdd5780601f10610cb257610100808354040283529160200191610cdd565b820191906000526020600020905b815481529060010190602001808311610cc057829003601f168201915b5050505050905090565b6000610cf28261294f565b610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890614596565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d77826115ed565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf90614628565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e07612865565b73ffffffffffffffffffffffffffffffffffffffff161480610e365750610e3581610e30612865565b6121fa565b5b610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c906146ba565b60405180910390fd5b610e7f83836129bb565b505050565b610e8c612865565b73ffffffffffffffffffffffffffffffffffffffff16610eaa611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef7906144a3565b60405180910390fd5b60001515601360019054906101000a900460ff16151514610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d9061474c565b60405180910390fd5b6000610f62600b612a74565b905060115460105482610f75919061479b565b10610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac90614863565b60405180910390fd5b60005b601054811015610ff257610fd583610fd0600b612a74565b612a82565b610fdf600b612c50565b8080610fea90614883565b915050610fb8565b506001601360016101000a81548160ff0219169083151502179055505050565b61101a612865565b73ffffffffffffffffffffffffffffffffffffffff16611038611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611085906144a3565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b60146020528060005260406000206000915054906101000a900460ff1681565b600e5481565b601660009054906101000a900460ff1681565b6000600780549050905090565b6040518060400160405280601681526020017f5472697070792047656c61746f20437265616d6572790000000000000000000081525081565b601360009054906101000a900460ff1681565b61115d611157612865565b82612c66565b61119c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111939061493e565b60405180910390fd5b6111a7838383612d44565b505050565b6040518060400160405280600381526020017f544743000000000000000000000000000000000000000000000000000000000081525081565b601660019054906101000a900460ff1681565b600d8054611205906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611231906144f2565b801561127e5780601f106112535761010080835404028352916020019161127e565b820191906000526020600020905b81548152906001019060200180831161126157829003601f168201915b505050505081565b6000611291836118b7565b82106112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906149d0565b60405180910390fd5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b611333612865565b73ffffffffffffffffffffffffffffffffffffffff16611351611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e906144a3565b60405180910390fd5b600047116113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e190614a3c565b60405180910390fd5b6113f2612865565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611437573d6000803e3d6000fd5b50565b61145583838360405180602001604052806000815250611f87565b505050565b611462612865565b73ffffffffffffffffffffffffffffffffffffffff16611480611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cd906144a3565b60405180910390fd5b80600e8190555050565b60105481565b60006114f06110f3565b8210611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890614ace565b60405180910390fd5b6007828154811061154557611544614aee565b5b90600052602060002001549050919050565b61155f612865565b73ffffffffffffffffffffffffffffffffffffffff1661157d611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146115d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ca906144a3565b60405180910390fd5b80600c90805190602001906115e9929190613922565b5050565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d90614b8f565b60405180910390fd5b80915050919050565b60125481565b606060006116b2836118b7565b905060008167ffffffffffffffff8111156116d0576116cf613d2e565b5b6040519080825280602002602001820160405280156116fe5781602001602082028036833780820191505090505b50905060005b82811015611748576117168582611286565b82828151811061172957611728614aee565b5b602002602001018181525050808061174090614883565b915050611704565b508092505050919050565b61175b612865565b73ffffffffffffffffffffffffffffffffffffffff16611779611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906144a3565b60405180910390fd5b60005b825181101561182c576118198382815181106117f1576117f0614aee565b5b602002602001015183838151811061180c5761180b614aee565b5b6020026020010151612fa0565b808061182490614883565b9150506117d2565b505050565b611839612865565b73ffffffffffffffffffffffffffffffffffffffff16611857611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a4906144a3565b60405180910390fd5b8060118190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614c21565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611977612865565b73ffffffffffffffffffffffffffffffffffffffff16611995611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e2906144a3565b60405180910390fd5b6119f5600061307d565b565b6119ff612865565b73ffffffffffffffffffffffffffffffffffffffff16611a1d611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6a906144a3565b60405180910390fd5b8060128190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611ab5906144f2565b80601f0160208091040260200160405190810160405280929190818152602001828054611ae1906144f2565b8015611b2e5780601f10611b0357610100808354040283529160200191611b2e565b820191906000526020600020905b815481529060010190602001808311611b1157829003601f168201915b5050505050905090565b601360009054906101000a900460ff16611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e90614c8d565b60405180910390fd5b60011515601660019054906101000a900460ff16151514611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614d1f565b60405180910390fd5b60008111611c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1790614d8b565b60405180910390fd5b601254811115611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c90614e1d565b60405180910390fd5b3481600e54611c749190614e3d565b1115611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90614ee3565b60405180910390fd5b611cbf3382612fa0565b50565b611cca612865565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90614f4f565b60405180910390fd5b8060066000611d45612865565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611df2612865565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e379190613a79565b60405180910390a35050565b611e4b612865565b73ffffffffffffffffffffffffffffffffffffffff16611e69611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6906144a3565b60405180910390fd5b601660019054906101000a900460ff1615601660016101000a81548160ff021916908315150217905550565b611ef3612865565b73ffffffffffffffffffffffffffffffffffffffff16611f11611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e906144a3565b60405180910390fd5b80600d9080519060200190611f7d929190613922565b5050565b600f5481565b611f98611f92612865565b83612c66565b611fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fce9061493e565b60405180910390fd5b611fe384848484613141565b50505050565b6060611ff48261294f565b612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a90614fe1565b60405180910390fd5b601360029054906101000a900460ff16156120a6576000600c8054612057906144f2565b905011612073576040518060200160405280600081525061209f565b600c61207e8361319d565b60405160200161208f9291906150d1565b6040516020818303038152906040525b9050612134565b600d80546120b3906144f2565b80601f01602080910402602001604051908101604052809291908181526020018280546120df906144f2565b801561212c5780601f106121015761010080835404028352916020019161212c565b820191906000526020600020905b81548152906001019060200180831161210f57829003601f168201915b505050505090505b919050565b60115481565b612147612865565b73ffffffffffffffffffffffffffffffffffffffff16612165611a7d565b73ffffffffffffffffffffffffffffffffffffffff16146121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b2906144a3565b60405180910390fd5b601360029054906101000a900460ff1615601360026101000a81548160ff021916908315150217905550565b601360029054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612296612865565b73ffffffffffffffffffffffffffffffffffffffff166122b4611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461230a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612301906144a3565b60405180910390fd5b81600f81905550806010819055505050565b612324612865565b73ffffffffffffffffffffffffffffffffffffffff16612342611a7d565b73ffffffffffffffffffffffffffffffffffffffff1614612398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238f906144a3565b60405180910390fd5b60005b825181101561249b576001601460008584815181106123bd576123bc614aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550816015600085848151811061242e5761242d614aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550808061249390614883565b91505061239b565b505050565b6124a8612865565b73ffffffffffffffffffffffffffffffffffffffff166124c6611a7d565b73ffffffffffffffffffffffffffffffffffffffff161461251c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612513906144a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561258c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258390615167565b60405180910390fd5b6125958161307d565b50565b601360019054906101000a900460ff1681565b601360009054906101000a900460ff166125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f1906151d3565b60405180910390fd5b60011515601660009054906101000a900460ff16151514612650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264790615265565b60405180910390fd5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905060011515811515146126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126df906152d1565b60405180910390fd5b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff168260ff16111561277d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277490615363565b60405180910390fd5b600f548260ff1611156127c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bc906153f5565b60405180910390fd5b8160ff16600f60008282546127da9190615415565b9250508190555081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282829054906101000a900460ff1661283c9190615449565b92506101000a81548160ff021916908360ff160217905550612861338360ff16612fa0565b5050565b600033905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061293857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806129485750612947826132fe565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612a2e836115ed565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae9906154c9565b60405180910390fd5b612afb8161294f565b15612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290615535565b60405180910390fd5b612b4760008383613368565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b97919061479b565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6001816000016000828254019250508190555050565b6000612c718261294f565b612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca7906155c7565b60405180910390fd5b6000612cbb836115ed565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d2a57508373ffffffffffffffffffffffffffffffffffffffff16612d1284610ce7565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d3b5750612d3a81856121fa565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d64826115ed565b73ffffffffffffffffffffffffffffffffffffffff1614612dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db190615659565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e21906156eb565b60405180910390fd5b612e35838383613368565b612e406000826129bb565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e909190615415565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ee7919061479b565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b80600081612fac6110f3565b612fb6919061479b565b905060001515601360019054906101000a900460ff1615151415612fe55760105481612fe2919061479b565b90505b60115481111561302a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130219061577d565b60405180910390fd5b600060016130366110f3565b613040919061479b565b905060005b848110156130755761306286828461305d919061479b565b612a82565b808061306d90614883565b915050613045565b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61314c848484612d44565b6131588484848461347c565b613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061580f565b60405180910390fd5b50505050565b606060008214156131e5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506132f9565b600082905060005b6000821461321757808061320090614883565b915050600a82613210919061585e565b91506131ed565b60008167ffffffffffffffff81111561323357613232613d2e565b5b6040519080825280601f01601f1916602001820160405280156132655781602001600182028036833780820191505090505b5090505b600085146132f25760018261327e9190615415565b9150600a8561328d919061588f565b6030613299919061479b565b60f81b8183815181106132af576132ae614aee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856132eb919061585e565b9450613269565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613373838383613604565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156133b6576133b181613609565b6133f5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146133f4576133f38382613652565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561343857613433816137bf565b613477565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613476576134758282613890565b5b5b505050565b600061349d8473ffffffffffffffffffffffffffffffffffffffff1661390f565b156135f7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026134c6612865565b8786866040518563ffffffff1660e01b81526004016134e89493929190615915565b6020604051808303816000875af192505050801561352457506040513d601f19601f820116820180604052508101906135219190615976565b60015b6135a7573d8060008114613554576040519150601f19603f3d011682016040523d82523d6000602084013e613559565b606091505b5060008151141561359f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135969061580f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506135fc565b600190505b949350505050565b505050565b6007805490506008600083815260200190815260200160002081905550600781908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161365f846118b7565b6136699190615415565b905060006009600084815260200190815260200160002054905081811461374e576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816009600083815260200190815260200160002081905550505b6009600084815260200190815260200160002060009055600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016007805490506137d39190615415565b905060006008600084815260200190815260200160002054905060006007838154811061380357613802614aee565b5b90600052602060002001549050806007838154811061382557613824614aee565b5b906000526020600020018190555081600860008381526020019081526020016000208190555060086000858152602001908152602001600020600090556007805480613874576138736159a3565b5b6001900381819060005260206000200160009055905550505050565b600061389b836118b7565b905081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806009600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b82805461392e906144f2565b90600052602060002090601f0160209004810192826139505760008555613997565b82601f1061396957805160ff1916838001178555613997565b82800160010185558215613997579182015b8281111561399657825182559160200191906001019061397b565b5b5090506139a491906139a8565b5090565b5b808211156139c15760008160009055506001016139a9565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613a0e816139d9565b8114613a1957600080fd5b50565b600081359050613a2b81613a05565b92915050565b600060208284031215613a4757613a466139cf565b5b6000613a5584828501613a1c565b91505092915050565b60008115159050919050565b613a7381613a5e565b82525050565b6000602082019050613a8e6000830184613a6a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ace578082015181840152602081019050613ab3565b83811115613add576000848401525b50505050565b6000601f19601f8301169050919050565b6000613aff82613a94565b613b098185613a9f565b9350613b19818560208601613ab0565b613b2281613ae3565b840191505092915050565b60006020820190508181036000830152613b478184613af4565b905092915050565b6000819050919050565b613b6281613b4f565b8114613b6d57600080fd5b50565b600081359050613b7f81613b59565b92915050565b600060208284031215613b9b57613b9a6139cf565b5b6000613ba984828501613b70565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bdd82613bb2565b9050919050565b613bed81613bd2565b82525050565b6000602082019050613c086000830184613be4565b92915050565b613c1781613bd2565b8114613c2257600080fd5b50565b600081359050613c3481613c0e565b92915050565b60008060408385031215613c5157613c506139cf565b5b6000613c5f85828601613c25565b9250506020613c7085828601613b70565b9150509250929050565b600060208284031215613c9057613c8f6139cf565b5b6000613c9e84828501613c25565b91505092915050565b613cb081613b4f565b82525050565b6000602082019050613ccb6000830184613ca7565b92915050565b600080600060608486031215613cea57613ce96139cf565b5b6000613cf886828701613c25565b9350506020613d0986828701613c25565b9250506040613d1a86828701613b70565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d6682613ae3565b810181811067ffffffffffffffff82111715613d8557613d84613d2e565b5b80604052505050565b6000613d986139c5565b9050613da48282613d5d565b919050565b600067ffffffffffffffff821115613dc457613dc3613d2e565b5b613dcd82613ae3565b9050602081019050919050565b82818337600083830152505050565b6000613dfc613df784613da9565b613d8e565b905082815260208101848484011115613e1857613e17613d29565b5b613e23848285613dda565b509392505050565b600082601f830112613e4057613e3f613d24565b5b8135613e50848260208601613de9565b91505092915050565b600060208284031215613e6f57613e6e6139cf565b5b600082013567ffffffffffffffff811115613e8d57613e8c6139d4565b5b613e9984828501613e2b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ed781613b4f565b82525050565b6000613ee98383613ece565b60208301905092915050565b6000602082019050919050565b6000613f0d82613ea2565b613f178185613ead565b9350613f2283613ebe565b8060005b83811015613f53578151613f3a8882613edd565b9750613f4583613ef5565b925050600181019050613f26565b5085935050505092915050565b60006020820190508181036000830152613f7a8184613f02565b905092915050565b600067ffffffffffffffff821115613f9d57613f9c613d2e565b5b602082029050602081019050919050565b600080fd5b6000613fc6613fc184613f82565b613d8e565b90508083825260208201905060208402830185811115613fe957613fe8613fae565b5b835b818110156140125780613ffe8882613c25565b845260208401935050602081019050613feb565b5050509392505050565b600082601f83011261403157614030613d24565b5b8135614041848260208601613fb3565b91505092915050565b600067ffffffffffffffff82111561406557614064613d2e565b5b602082029050602081019050919050565b60006140896140848461404a565b613d8e565b905080838252602082019050602084028301858111156140ac576140ab613fae565b5b835b818110156140d557806140c18882613b70565b8452602084019350506020810190506140ae565b5050509392505050565b600082601f8301126140f4576140f3613d24565b5b8135614104848260208601614076565b91505092915050565b60008060408385031215614124576141236139cf565b5b600083013567ffffffffffffffff811115614142576141416139d4565b5b61414e8582860161401c565b925050602083013567ffffffffffffffff81111561416f5761416e6139d4565b5b61417b858286016140df565b9150509250929050565b61418e81613a5e565b811461419957600080fd5b50565b6000813590506141ab81614185565b92915050565b600080604083850312156141c8576141c76139cf565b5b60006141d685828601613c25565b92505060206141e78582860161419c565b9150509250929050565b600067ffffffffffffffff82111561420c5761420b613d2e565b5b61421582613ae3565b9050602081019050919050565b6000614235614230846141f1565b613d8e565b90508281526020810184848401111561425157614250613d29565b5b61425c848285613dda565b509392505050565b600082601f83011261427957614278613d24565b5b8135614289848260208601614222565b91505092915050565b600080600080608085870312156142ac576142ab6139cf565b5b60006142ba87828801613c25565b94505060206142cb87828801613c25565b93505060406142dc87828801613b70565b925050606085013567ffffffffffffffff8111156142fd576142fc6139d4565b5b61430987828801614264565b91505092959194509250565b6000806040838503121561432c5761432b6139cf565b5b600061433a85828601613c25565b925050602061434b85828601613c25565b9150509250929050565b6000806040838503121561436c5761436b6139cf565b5b600061437a85828601613b70565b925050602061438b85828601613b70565b9150509250929050565b600060ff82169050919050565b6143ab81614395565b81146143b657600080fd5b50565b6000813590506143c8816143a2565b92915050565b600080604083850312156143e5576143e46139cf565b5b600083013567ffffffffffffffff811115614403576144026139d4565b5b61440f8582860161401c565b9250506020614420858286016143b9565b9150509250929050565b6000602082840312156144405761443f6139cf565b5b600061444e848285016143b9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061448d602083613a9f565b915061449882614457565b602082019050919050565b600060208201905081810360008301526144bc81614480565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061450a57607f821691505b6020821081141561451e5761451d6144c3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614580602c83613a9f565b915061458b82614524565b604082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614612602183613a9f565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006146a4603883613a9f565b91506146af82614648565b604082019050919050565b600060208201905081810360008301526146d381614697565b9050919050565b7f52657365727665204e46543a20726573657276656420546f6b656e732068617660008201527f65206265656e206d696e74656400000000000000000000000000000000000000602082015250565b6000614736602d83613a9f565b9150614741826146da565b604082019050919050565b6000602082019050818103600083015261476581614729565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147a682613b4f565b91506147b183613b4f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156147e6576147e561476c565b5b828201905092915050565b7f52657365727665204e46543a206e6f7420656e6f756768204e465473206c656660008201527f7420746f20726573657276650000000000000000000000000000000000000000602082015250565b600061484d602c83613a9f565b9150614858826147f1565b604082019050919050565b6000602082019050818103600083015261487c81614840565b9050919050565b600061488e82613b4f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148c1576148c061476c565b5b600182019050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614928603183613a9f565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006149ba602b83613a9f565b91506149c58261495e565b604082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b7f57697468647261773a20696e73756666696369656e742066756e64732e000000600082015250565b6000614a26601d83613a9f565b9150614a31826149f0565b602082019050919050565b60006020820190508181036000830152614a5581614a19565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000614ab8602c83613a9f565b9150614ac382614a5c565b604082019050919050565b60006020820190508181036000830152614ae781614aab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614b79602983613a9f565b9150614b8482614b1d565b604082019050919050565b60006020820190508181036000830152614ba881614b6c565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614c0b602a83613a9f565b9150614c1682614baf565b604082019050919050565b60006020820190508181036000830152614c3a81614bfe565b9050919050565b7f6d696e743a20636f6e7472616374207061757365640000000000000000000000600082015250565b6000614c77601583613a9f565b9150614c8282614c41565b602082019050919050565b60006020820190508181036000830152614ca681614c6a565b9050919050565b7f6d696e743a205075626c69632073616c65206973206e6f7420656e61626c656460008201527f2079657400000000000000000000000000000000000000000000000000000000602082015250565b6000614d09602483613a9f565b9150614d1482614cad565b604082019050919050565b60006020820190508181036000830152614d3881614cfc565b9050919050565b7f6d696e743a2043616e2774206d696e74206c657373207468616e20312e000000600082015250565b6000614d75601d83613a9f565b9150614d8082614d3f565b602082019050919050565b60006020820190508181036000830152614da481614d68565b9050919050565b7f6d696e743a2043616e2774206d696e74206d6f7265207468616e206d61784d6960008201527f6e74735065725472616e73616374696f6e2e0000000000000000000000000000602082015250565b6000614e07603283613a9f565b9150614e1282614dab565b604082019050919050565b60006020820190508181036000830152614e3681614dfa565b9050919050565b6000614e4882613b4f565b9150614e5383613b4f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e8c57614e8b61476c565b5b828202905092915050565b7f6d696e743a20496e636f72726563742045746865722076616c75652e00000000600082015250565b6000614ecd601c83613a9f565b9150614ed882614e97565b602082019050919050565b60006020820190508181036000830152614efc81614ec0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614f39601983613a9f565b9150614f4482614f03565b602082019050919050565b60006020820190508181036000830152614f6881614f2c565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000614fcb602f83613a9f565b9150614fd682614f6f565b604082019050919050565b60006020820190508181036000830152614ffa81614fbe565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461502e816144f2565b6150388186615001565b94506001821660008114615053576001811461506457615097565b60ff19831686528186019350615097565b61506d8561500c565b60005b8381101561508f57815481890152600182019150602081019050615070565b838801955050505b50505092915050565b60006150ab82613a94565b6150b58185615001565b93506150c5818560208601613ab0565b80840191505092915050565b60006150dd8285615021565b91506150e982846150a0565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615151602683613a9f565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f70726573616c654d696e743a20636f6e74726163742070617573656400000000600082015250565b60006151bd601c83613a9f565b91506151c882615187565b602082019050919050565b600060208201905081810360008301526151ec816151b0565b9050919050565b7f70726573616c654d696e743a2050726573616c65206973206e6f7420656e616260008201527f6c65642079657400000000000000000000000000000000000000000000000000602082015250565b600061524f602783613a9f565b915061525a826151f3565b604082019050919050565b6000602082019050818103600083015261527e81615242565b9050919050565b7f70726573616c654d696e743a2057726f6e672061646472657373000000000000600082015250565b60006152bb601a83613a9f565b91506152c682615285565b602082019050919050565b600060208201905081810360008301526152ea816152ae565b9050919050565b7f70726573616c654d696e743a204578636565646564206d617820617661696c6160008201527f626c6520746f2070757263686173650000000000000000000000000000000000602082015250565b600061534d602f83613a9f565b9150615358826152f1565b604082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f70726573616c654d696e743a2050726573616c6520737570706c79206973206f60008201527f75742e0000000000000000000000000000000000000000000000000000000000602082015250565b60006153df602383613a9f565b91506153ea82615383565b604082019050919050565b6000602082019050818103600083015261540e816153d2565b9050919050565b600061542082613b4f565b915061542b83613b4f565b92508282101561543e5761543d61476c565b5b828203905092915050565b600061545482614395565b915061545f83614395565b9250828210156154725761547161476c565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006154b3602083613a9f565b91506154be8261547d565b602082019050919050565b600060208201905081810360008301526154e2816154a6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061551f601c83613a9f565b915061552a826154e9565b602082019050919050565b6000602082019050818103600083015261554e81615512565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006155b1602c83613a9f565b91506155bc82615555565b604082019050919050565b600060208201905081810360008301526155e0816155a4565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b6000615643602983613a9f565b915061564e826155e7565b604082019050919050565b6000602082019050818103600083015261567281615636565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006156d5602483613a9f565b91506156e082615679565b604082019050919050565b60006020820190508181036000830152615704816156c8565b9050919050565b7f6d617820537570706c7920436865636b3a20546f6b656e7320737570706c792060008201527f72656163686564206c696d69742e000000000000000000000000000000000000602082015250565b6000615767602e83613a9f565b91506157728261570b565b604082019050919050565b600060208201905081810360008301526157968161575a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006157f9603283613a9f565b91506158048261579d565b604082019050919050565b60006020820190508181036000830152615828816157ec565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061586982613b4f565b915061587483613b4f565b9250826158845761588361582f565b5b828204905092915050565b600061589a82613b4f565b91506158a583613b4f565b9250826158b5576158b461582f565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006158e7826158c0565b6158f181856158cb565b9350615901818560208601613ab0565b61590a81613ae3565b840191505092915050565b600060808201905061592a6000830187613be4565b6159376020830186613be4565b6159446040830185613ca7565b818103606083015261595681846158dc565b905095945050505050565b60008151905061597081613a05565b92915050565b60006020828403121561598c5761598b6139cf565b5b600061599a84828501615961565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122052bd77dc4346a31cc9904b32f33da367382443d5b1d6674ecf0addb413c9ca5d64736f6c634300080b0033

Verified Source Code Partial Match

Compiler: v0.8.11+commit.d7f03943 EVM: london Optimization: No
TrippyGelatoCreamery.sol 666 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

library Counters {
    struct Counter {
        uint256 _value;
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
    unchecked {
        counter._value += 1;
    }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
    unchecked {
        counter._value = value - 1;
    }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    function transferFrom(address from, address to, uint256 tokenId) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}

interface IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value : value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    function tokenByIndex(uint256 index) external view returns (uint256);
}

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    string private _name;
    string private _symbol;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
        interfaceId == type(IERC721).interfaceId ||
        interfaceId == type(IERC721Metadata).interfaceId ||
        super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");
        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );
        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");
        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");
        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");
        _beforeTokenTransfer(address(0), to, tokenId);
        _balances[to] += 1;
        _owners[tokenId] = to;
        emit Transfer(address(0), to, tokenId);
    }

    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);
        _beforeTokenTransfer(owner, address(0), tokenId);
        _approve(address(0), tokenId);
        _balances[owner] -= 1;
        delete _owners[tokenId];
        emit Transfer(owner, address(0), tokenId);
    }

    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");
        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual {}
}

abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    uint256[] private _allTokens;
    mapping(uint256 => uint256) private _allTokensIndex;
    mapping(uint256 => uint256) private _ownedTokensIndex;
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);
        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];
        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract TrippyGelatoCreamery is Context, Ownable, ERC721Enumerable {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIdTracker;

    string public constant TOKEN_NAME = "Trippy Gelato Creamery";
    string public constant TOKEN_SYMBOL = "TGC";

   using Strings for uint256;

    //metadata
    string baseURI;

    string public blindTokenURI = "ipfs://QmQ2KLgRySyLuVMWtedTpTmpcxLL7Xtw8mu3Ldpo6jQVWZ";
    //sales
    uint256 public cost = 0.05 ether;

    uint256 public presaleSupply = 2000;
    uint256 public reservedSupply = 51;
    uint256 public maxSupply = 6000;
    uint256 public maxMintsPerTransaction = 5;

    bool public isActive = true;
    bool public reservedTokensMinted = false;

    bool public blindBoxOpened = false;

    mapping(address => bool) public presaleList;
    mapping(address => uint8) private _allowMaxList;

    //Sale states
    bool public presaleEnabled = false;
    bool public publicSaleEnabled = false;

    constructor(string memory _initBaseURI) ERC721(TOKEN_NAME, TOKEN_SYMBOL) {
        setBaseURI(_initBaseURI);   
    }

    // metadata region
    function _baseURI() internal view virtual override returns (string memory) {
        return baseURI;
    }

    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        baseURI = _newBaseURI;
    }
    //endregion

    //setters and getters for sales region
    function setCost(uint256 _newCost) public onlyOwner {
        cost = _newCost;
    }

    function setBlindBoxURI(string memory _newURI) public onlyOwner {
        blindTokenURI = _newURI;
    }

    function configurePresale(uint256 _presaleSupply, uint256 _reservedSupply) public onlyOwner {
        presaleSupply = _presaleSupply;
        reservedSupply = _reservedSupply;
    }

    function setMaxSupply(uint256 _newMaxSupply) public onlyOwner {
        maxSupply = _newMaxSupply;
    }

    function setMaxMintsPerTransaction(uint256 _newmaxMintsPerTransaction) public onlyOwner {
        maxMintsPerTransaction = _newmaxMintsPerTransaction;
    }

    function setPresaleList(address[] memory _allowList, uint8 numAllowedToMint) external onlyOwner {
        for (uint256 i = 0; i < _allowList.length; i++) {
            presaleList[_allowList[i]] = true;
            _allowMaxList[_allowList[i]] = numAllowedToMint;
        }
    }
    //endregion

    function reserveNFTs(address to) public onlyOwner {
        require(reservedTokensMinted == false, "Reserve NFT: reserved Tokens have been minted");
        uint totalMinted = _tokenIdTracker.current();
        require(totalMinted + reservedSupply < maxSupply, "Reserve NFT: not enough NFTs left to reserve");

        for (uint i = 0; i < reservedSupply; i++) {
            _mint(to, _tokenIdTracker.current());
            _tokenIdTracker.increment();
        }
        reservedTokensMinted = true;
    }

    function toggleActiveState() public onlyOwner {
        isActive = !isActive;
    }

    function getBalanceFromWallet(address _wallet) external view returns (uint256[] memory) {
        uint256 amount = balanceOf(_wallet);

        uint256[] memory amountMemory = new uint256[](amount);
        for (uint256 i;i < amount;i++) {
            amountMemory[i] = tokenOfOwnerByIndex(_wallet, i);
        }

        return amountMemory;
    }

    function withdraw() external onlyOwner {
        require(address(this).balance > 0, "Withdraw: insufficient funds.");
        payable(_msgSender()).transfer(address(this).balance);
    }

    //mint and airdrop region
    function mint(uint256 _mintAmount) public payable {
        require(isActive, "mint: contract paused");       
        require(publicSaleEnabled == true, "mint: Public sale is not enabled yet");
        require(_mintAmount > 0, "mint: Can't mint less than 1.");
        require(_mintAmount <= maxMintsPerTransaction, "mint: Can't mint more than maxMintsPerTransaction.");
        require(cost * _mintAmount <= msg.value, "mint: Incorrect Ether value.");
        mintNFTs(msg.sender, _mintAmount);
    }

    function presaleMint(uint8 _mintAmount) public payable  {
        require(isActive, "presaleMint: contract paused");       
        require(presaleEnabled == true, "presaleMint: Presale is not enabled yet");
        bool isWhiteListed = presaleList[msg.sender];
        require(isWhiteListed == true, "presaleMint: Wrong address");
        require(_mintAmount <= _allowMaxList[msg.sender], "presaleMint: Exceeded max available to purchase");
        require(_mintAmount <= presaleSupply, "presaleMint: Presale supply is out.");
        presaleSupply -= _mintAmount;
        _allowMaxList[msg.sender] -= _mintAmount;
        mintNFTs(msg.sender, _mintAmount);
    }

    function flipBlindBoxStatus() public onlyOwner {
        blindBoxOpened = !blindBoxOpened;
    }

    function flipPresale() public onlyOwner {
        presaleEnabled = !presaleEnabled;
    }

    function flipPublicsale() public onlyOwner {
        publicSaleEnabled = !publicSaleEnabled;
    }

    modifier maxSupplyCheck(uint256 amount)  {
        uint256 totalAmount = totalSupply() + amount;       
        if(reservedTokensMinted == false){
            totalAmount = totalAmount + reservedSupply;
        }
        require(totalAmount <= maxSupply, "max Supply Check: Tokens supply reached limit.");
        _;
    }

    function mintNFTs(address to, uint256 amount) internal maxSupplyCheck(amount) {
        uint256 fromToken = totalSupply() + 1;
        for (uint256 i = 0; i < amount; i++) {
            _mint(to, fromToken + i);
        }
    }

    function airdrop(address[] memory addresses, uint256[] memory amounts) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            mintNFTs(addresses[i], amounts[i]);
        }
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        if(blindBoxOpened){
            return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
        }else{
            return blindTokenURI;
        }
    }    
    //endregion
}

Read Contract

TOKEN_NAME 0x18821400 → string
TOKEN_SYMBOL 0x2a905318 → string
balanceOf 0x70a08231 → uint256
blindBoxOpened 0xdf63c48c → bool
blindTokenURI 0x2ae0846d → string
cost 0x13faede6 → uint256
getApproved 0x081812fc → address
getBalanceFromWallet 0x65bd6aa3 → uint256[]
isActive 0x22f3e2d4 → bool
isApprovedForAll 0xe985e9c5 → bool
maxMintsPerTransaction 0x64aa0c79 → uint256
maxSupply 0xd5abeb01 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
ownerOf 0x6352211e → address
presaleEnabled 0x143b237f → bool
presaleList 0x12fb92e0 → bool
presaleSupply 0xb3a196e9 → uint256
publicSaleEnabled 0x2ab91bba → bool
reservedSupply 0x44d19d2b → uint256
reservedTokensMinted 0xf3e38821 → bool
supportsInterface 0x01ffc9a7 → bool
symbol 0x95d89b41 → string
tokenByIndex 0x4f6ccce7 → uint256
tokenOfOwnerByIndex 0x2f745c59 → uint256
tokenURI 0xc87b56dd → string
totalSupply 0x18160ddd → uint256

Write Contract 23 functions

These functions modify contract state and require a wallet transaction to execute.

airdrop 0x67243482
address[] addresses
uint256[] amounts
approve 0x095ea7b3
address to
uint256 tokenId
configurePresale 0xec5ed89b
uint256 _presaleSupply
uint256 _reservedSupply
flipBlindBoxStatus 0xddc3faf8
No parameters
flipPresale 0x00acf348
No parameters
flipPublicsale 0xa8b80b93
No parameters
mint 0xa0712d68
uint256 _mintAmount
presaleMint 0xf617f920
uint8 _mintAmount
renounceOwnership 0x715018a6
No parameters
reserveNFTs 0x0e0682d4
address to
safeTransferFrom 0x42842e0e
address from
address to
uint256 tokenId
safeTransferFrom 0xb88d4fde
address from
address to
uint256 tokenId
bytes _data
setApprovalForAll 0xa22cb465
address operator
bool approved
setBaseURI 0x55f804b3
string _newBaseURI
setBlindBoxURI 0xb023b315
string _newURI
setCost 0x44a0d68a
uint256 _newCost
setMaxMintsPerTransaction 0x79268b07
uint256 _newmaxMintsPerTransaction
setMaxSupply 0x6f8b44b0
uint256 _newMaxSupply
setPresaleList 0xf2266d7f
address[] _allowList
uint8 numAllowedToMint
toggleActiveState 0x11a67e77
No parameters
transferFrom 0x23b872dd
address from
address to
uint256 tokenId
transferOwnership 0xf2fde38b
address newOwner
withdraw 0x3ccfd60b
No parameters

Recent Transactions

No transactions found for this address