From 6f6c2e4812bd12fcdcf0d34eaf0e220939ca69c0 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Fri, 8 Apr 2022 04:49:28 -0400 Subject: [PATCH] limit token redemption --- README.md | 1 + client/src/lib/epicNFT.json | 30 ++++++++++++++++++++++++++++-- contracts/EpicNFT.sol | 13 +++++++++++++ scripts/run.js | 9 +++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ea6140f..3908366 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Demo NFT collection for learning purposes. 3. https://testnets.opensea.io/collection/squarenft-lemz9demvy 4. https://testnets.opensea.io/collection/squarenft-1xkwn34mdz 5. https://testnets.opensea.io/collection/squarenft-qlxxnjj8mo (0x6c603E2bF856529A095dAbC9D9991f0c559e1855) +6. https://testnets.opensea.io/collection/squarenft-noshuqlivp (0xAd9b1Faf6eDC836C16c7ff4e1E16012982030CE3) ## Square NFT diff --git a/client/src/lib/epicNFT.json b/client/src/lib/epicNFT.json index 044e9e1..7f2379f 100644 --- a/client/src/lib/epicNFT.json +++ b/client/src/lib/epicNFT.json @@ -158,6 +158,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getMaxNFTAllowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -202,6 +215,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "nftMintedCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -394,8 +420,8 @@ "type": "function" } ], - "bytecode": "0x60806040526040518060a001604052806076815260200162004beb60769139600890805190602001906200003592919062000c55565b506040518060e0016040528060b3815260200162004b3860b39139600990805190602001906200006792919062000c55565b506040518061014001604052806040518060400160405280600381526020017f726564000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f677265656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f626c75650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f776869746500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f79656c6c6f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f6379616e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f70696e6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6d6167656e74610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f73696c766572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f676f6c6400000000000000000000000000000000000000000000000000000000815250815250600a90600a620002d292919062000ce6565b506040518061014001604052806040518060400160405280600481526020017f457069630000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4c6567656e64617279000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865726f6963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46616e746173746963000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5465727269626c6500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4372617a7900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f57696c640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f54657272696679696e670000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f53706f6f6b790000000000000000000000000000000000000000000000000000815250815250600b90600a6200053d92919062000ce6565b506040518061018001604052806040518060400160405280600881526020017f417373617373696e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f436c65726963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f526f67756500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4e696e6a6100000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4c6f72640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f57697a617264000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f57617272696f720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4265727365726b6572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4e6563726f6d616e64657200000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f53756d6d6f6e657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426172640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4c616e6365720000000000000000000000000000000000000000000000000000815250815250600c90600c6200081e92919062000d4d565b506040518061014001604052806040518060400160405280600781526020017f536f6c646965720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865616c6572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4578706c6f72657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4d65726368616e7400000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f446576656c6f706572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f426c61636b536d6974680000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4869746d616e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f48756e746572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f5361696c6f720000000000000000000000000000000000000000000000000000815250815250600d90600a62000a8992919062000ce6565b5034801562000a9757600080fd5b506040518060400160405280600981526020017f5371756172654e465400000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5351554152450000000000000000000000000000000000000000000000000000815250816000908051906020019062000b1c92919062000c55565b50806001908051906020019062000b3592919062000c55565b50505062000b836040518060400160405280601e81526020017f4d79206669727374204e465420636f6e7472616374212045504943212121000081525062000b8960201b620011d61760201c565b62000f6e565b62000c298160405160240162000ba0919062000e82565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505062000c2c60201b60201c565b50565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b82805462000c639062000ef8565b90600052602060002090601f01602090048101928262000c87576000855562000cd3565b82601f1062000ca257805160ff191683800117855562000cd3565b8280016001018555821562000cd3579182015b8281111562000cd257825182559160200191906001019062000cb5565b5b50905062000ce2919062000db4565b5090565b82805482825590600052602060002090810192821562000d3a579160200282015b8281111562000d3957825182908051906020019062000d2892919062000c55565b509160200191906001019062000d07565b5b50905062000d49919062000dd3565b5090565b82805482825590600052602060002090810192821562000da1579160200282015b8281111562000da057825182908051906020019062000d8f92919062000c55565b509160200191906001019062000d6e565b5b50905062000db0919062000dd3565b5090565b5b8082111562000dcf57600081600090555060010162000db5565b5090565b5b8082111562000df7576000818162000ded919062000dfb565b5060010162000dd4565b5090565b50805462000e099062000ef8565b6000825580601f1062000e1d575062000e3e565b601f01602090049060005260206000209081019062000e3d919062000db4565b5b50565b600062000e4e8262000ea6565b62000e5a818562000eb1565b935062000e6c81856020860162000ec2565b62000e778162000f5d565b840191505092915050565b6000602082019050818103600083015262000e9e818462000e41565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ee257808201518184015260208101905062000ec5565b8381111562000ef2576000848401525b50505050565b6000600282049050600182168062000f1157607f821691505b6020821081141562000f285762000f2762000f2e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613bba8062000f7e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612799565b61031c565b6040516101219190612e15565b60405180910390f35b6101326103fe565b60405161013f9190612e30565b60405180910390f35b610162600480360381019061015d91906127eb565b610490565b60405161016f9190612d85565b60405180910390f35b610192600480360381019061018d91906126de565b610515565b005b61019c61062d565b005b6101b860048036038101906101b391906125d8565b610c6a565b005b6101d460048036038101906101cf91906125d8565b610cca565b005b6101f060048036038101906101eb91906127eb565b610cea565b6040516101fd9190612d85565b60405180910390f35b610220600480360381019061021b9190612573565b610d9c565b60405161022d9190613090565b60405180910390f35b61023e610e54565b60405161024b9190612e30565b60405180910390f35b61026e6004803603810190610269919061271a565b610ee6565b60405161027b9190612e30565b60405180910390f35b61029e600480360381019061029991906126a2565b610f78565b005b6102ba60048036038101906102b59190612627565b610f8e565b005b6102d660048036038101906102d191906127eb565b610ff0565b6040516102e39190612e30565b60405180910390f35b6103066004803603810190610301919061259c565b611142565b6040516103139190612e15565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f68261126f565b5b9050919050565b60606000805461040d90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461043990613381565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112d9565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190613010565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890613050565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b0611345565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d9611345565b611142565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612f50565b60405180910390fd5b610628838361134d565b505050565b60006106396007611406565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e57838290600052602060002001805461068190613381565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90613381565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ee6565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b8282101561082357838290600052602060002001805461079690613381565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290613381565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ee6565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab90613381565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790613381565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ee6565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c090613381565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90613381565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ee6565b9050600084848484604051602001610aa89493929190612c7d565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612cbb565b60405160208183030381529060405290506000610b1d83610af884611414565b604051602001610b09929190612d1e565b604051602081830303815290604052611414565b9050600081604051602001610b329190612d63565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d00000000000000000000008152506111d6565b610b8a816111d6565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a00000000000000000000008152506111d6565b610bd2338a6115d2565b610bdc89826115f0565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a33611664565b610c266007611703565b7febb98688741ffa4c7589bf325de30cf7becb63de567842e1ccdb6cb949fdc82c338a604051610c57929190612dec565b60405180910390a1505050505050505050565b610c7b610c75611345565b82611719565b610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613070565b60405180910390fd5b610cc58383836117f7565b505050565b610ce583838360405180602001604052806000815250610f8e565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90612f90565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612f70565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e6390613381565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8f90613381565b8015610edc5780601f10610eb157610100808354040283529160200191610edc565b820191906000526020600020905b815481529060010190602001808311610ebf57829003601f168201915b5050505050905090565b60606000610f1c84610ef785611a5e565b604051602001610f08929190612c59565b604051602081830303815290604052611c0b565b9050845181610f2b919061342d565b9050848181518110610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f8a610f83611345565b8383611c3e565b5050565b610f9f610f99611345565b83611719565b610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613070565b60405180910390fd5b610fea84848484611dab565b50505050565b6060610ffb826112d9565b61103a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103190612ff0565b60405180910390fd5b600060066000848152602001908152602001600020805461105a90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461108690613381565b80156110d35780601f106110a8576101008083540402835291602001916110d3565b820191906000526020600020905b8154815290600101906020018083116110b657829003601f168201915b5050505050905060006110e4611e07565b90506000815114156110fa57819250505061113d565b60008251111561112f578082604051602001611117929190612c59565b6040516020818303038152906040529250505061113d565b61113884611e1e565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61126c816040516024016111ea9190612e30565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113c083610cea565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6060600082519050600081141561143d57604051806020016040528060008152509150506115cd565b6000600360028361144e91906131b6565b611458919061320c565b6004611464919061323d565b9050600060208261147591906131b6565b67ffffffffffffffff8111156114b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114e65781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613b45604091399050600181016020830160005b8681101561158a5760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050611511565b5060038606600181146115a457600281146115b4576115bf565b613d3d60f01b60028303526115bf565b603d60f81b60018303525b508484525050819450505050505b919050565b6115ec828260405180602001604052806000815250611eee565b5050565b6115f9826112d9565b611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612fb0565b60405180910390fd5b8060066000848152602001908152602001600020908051906020019061165f9291906122e7565b505050565b6116fe83838360405160240161167c93929190612e52565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b505050565b6001816000016000828254019250508190555050565b6000611724826112d9565b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a90612f30565b60405180910390fd5b600061176e83610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117dd57508373ffffffffffffffffffffffffffffffffffffffff166117c584610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117ee57506117ed8185611142565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661181782610cea565b73ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490612eb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490612ef0565b60405180910390fd5b6118e8838383611f49565b6118f360008261134d565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119439190613297565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199a91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a59838383611f4e565b505050565b60606000821415611aa6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c06565b600082905060005b60008214611ad8578080611ac1906133e4565b915050600a82611ad1919061320c565b9150611aae565b60008167ffffffffffffffff811115611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b4c5781602001600182028036833780820191505090505b5090505b60008514611bff57600182611b659190613297565b9150600a85611b74919061342d565b6030611b8091906131b6565b60f81b818381518110611bbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bf8919061320c565b9450611b50565b8093505050505b919050565b600081604051602001611c1e9190612c42565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490612f10565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d9e9190612e15565b60405180910390a3505050565b611db68484846117f7565b611dc284848484611f53565b611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890612e90565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611e29826112d9565b611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613030565b60405180910390fd5b6000611e72611e07565b90506000815111611e925760405180602001604052806000815250611ebd565b80611e9c84611a5e565b604051602001611ead929190612c59565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ef883836120ea565b611f056000848484611f53565b611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90612e90565b60405180910390fd5b505050565b505050565b505050565b6000611f748473ffffffffffffffffffffffffffffffffffffffff166122c4565b156120dd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f9d611345565b8786866040518563ffffffff1660e01b8152600401611fbf9493929190612da0565b602060405180830381600087803b158015611fd957600080fd5b505af192505050801561200a57506040513d601f19601f8201168201806040525081019061200791906127c2565b60015b61208d573d806000811461203a576040519150601f19603f3d011682016040523d82523d6000602084013e61203f565b606091505b50600081511415612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207c90612e90565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120e2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190612fd0565b60405180910390fd5b612163816112d9565b156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90612ed0565b60405180910390fd5b6121af60008383611f49565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121ff91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122c060008383611f4e565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122f390613381565b90600052602060002090601f016020900481019282612315576000855561235c565b82601f1061232e57805160ff191683800117855561235c565b8280016001018555821561235c579182015b8281111561235b578251825591602001919060010190612340565b5b509050612369919061236d565b5090565b5b8082111561238657600081600090555060010161236e565b5090565b600061239d612398846130d0565b6130ab565b905080838252602082019050828560208602820111156123bc57600080fd5b60005b8581101561240657813567ffffffffffffffff8111156123de57600080fd5b8086016123eb8982612534565b855260208501945060208401935050506001810190506123bf565b5050509392505050565b600061242361241e846130fc565b6130ab565b90508281526020810184848401111561243b57600080fd5b61244684828561333f565b509392505050565b600061246161245c8461312d565b6130ab565b90508281526020810184848401111561247957600080fd5b61248484828561333f565b509392505050565b60008135905061249b81613ae8565b92915050565b600082601f8301126124b257600080fd5b81356124c284826020860161238a565b91505092915050565b6000813590506124da81613aff565b92915050565b6000813590506124ef81613b16565b92915050565b60008151905061250481613b16565b92915050565b600082601f83011261251b57600080fd5b813561252b848260208601612410565b91505092915050565b600082601f83011261254557600080fd5b813561255584826020860161244e565b91505092915050565b60008135905061256d81613b2d565b92915050565b60006020828403121561258557600080fd5b60006125938482850161248c565b91505092915050565b600080604083850312156125af57600080fd5b60006125bd8582860161248c565b92505060206125ce8582860161248c565b9150509250929050565b6000806000606084860312156125ed57600080fd5b60006125fb8682870161248c565b935050602061260c8682870161248c565b925050604061261d8682870161255e565b9150509250925092565b6000806000806080858703121561263d57600080fd5b600061264b8782880161248c565b945050602061265c8782880161248c565b935050604061266d8782880161255e565b925050606085013567ffffffffffffffff81111561268a57600080fd5b6126968782880161250a565b91505092959194509250565b600080604083850312156126b557600080fd5b60006126c38582860161248c565b92505060206126d4858286016124cb565b9150509250929050565b600080604083850312156126f157600080fd5b60006126ff8582860161248c565b92505060206127108582860161255e565b9150509250929050565b60008060006060848603121561272f57600080fd5b600084013567ffffffffffffffff81111561274957600080fd5b612755868287016124a1565b935050602084013567ffffffffffffffff81111561277257600080fd5b61277e86828701612534565b925050604061278f8682870161255e565b9150509250925092565b6000602082840312156127ab57600080fd5b60006127b9848285016124e0565b91505092915050565b6000602082840312156127d457600080fd5b60006127e2848285016124f5565b91505092915050565b6000602082840312156127fd57600080fd5b600061280b8482850161255e565b91505092915050565b61281d816132cb565b82525050565b61282c816132dd565b82525050565b600061283d82613173565b6128478185613189565b935061285781856020860161334e565b6128608161351a565b840191505092915050565b60006128768261317e565b612880818561319a565b935061289081856020860161334e565b6128998161351a565b840191505092915050565b60006128af8261317e565b6128b981856131ab565b93506128c981856020860161334e565b80840191505092915050565b600081546128e281613381565b6128ec81866131ab565b9450600182166000811461290757600181146129185761294b565b60ff1983168652818601935061294b565b6129218561315e565b60005b8381101561294357815481890152600182019150602081019050612924565b838801955050505b50505092915050565b600061296160328361319a565b915061296c8261352b565b604082019050919050565b600061298460258361319a565b915061298f8261357a565b604082019050919050565b60006129a7601c8361319a565b91506129b2826135c9565b602082019050919050565b60006129ca60248361319a565b91506129d5826135f2565b604082019050919050565b60006129ed60198361319a565b91506129f882613641565b602082019050919050565b6000612a106063836131ab565b9150612a1b8261366a565b606382019050919050565b6000612a33602c8361319a565b9150612a3e82613705565b604082019050919050565b6000612a56600d836131ab565b9150612a6182613754565b600d82019050919050565b6000612a7960388361319a565b9150612a848261377d565b604082019050919050565b6000612a9c602a8361319a565b9150612aa7826137cc565b604082019050919050565b6000612abf60298361319a565b9150612aca8261381b565b604082019050919050565b6000612ae2602e8361319a565b9150612aed8261386a565b604082019050919050565b6000612b056002836131ab565b9150612b10826138b9565b600282019050919050565b6000612b2860208361319a565b9150612b33826138e2565b602082019050919050565b6000612b4b60318361319a565b9150612b568261390b565b604082019050919050565b6000612b6e602c8361319a565b9150612b798261395a565b604082019050919050565b6000612b91602f8361319a565b9150612b9c826139a9565b604082019050919050565b6000612bb4600a836131ab565b9150612bbf826139f8565b600a82019050919050565b6000612bd760218361319a565b9150612be282613a21565b604082019050919050565b6000612bfa601d836131ab565b9150612c0582613a70565b601d82019050919050565b6000612c1d60318361319a565b9150612c2882613a99565b604082019050919050565b612c3c81613335565b82525050565b6000612c4e82846128a4565b915081905092915050565b6000612c6582856128a4565b9150612c7182846128a4565b91508190509392505050565b6000612c8982876128a4565b9150612c9582866128a4565b9150612ca182856128a4565b9150612cad82846128a4565b915081905095945050505050565b6000612cc782896128d5565b9150612cd382886128a4565b9150612cdf82876128d5565b9150612ceb82866128a4565b9150612cf782856128a4565b9150612d0382846128a4565b9150612d0e82612a49565b9150819050979650505050505050565b6000612d2982612ba7565b9150612d3582856128a4565b9150612d4082612a03565b9150612d4c82846128a4565b9150612d5782612af8565b91508190509392505050565b6000612d6e82612bed565b9150612d7a82846128a4565b915081905092915050565b6000602082019050612d9a6000830184612814565b92915050565b6000608082019050612db56000830187612814565b612dc26020830186612814565b612dcf6040830185612c33565b8181036060830152612de18184612832565b905095945050505050565b6000604082019050612e016000830185612814565b612e0e6020830184612c33565b9392505050565b6000602082019050612e2a6000830184612823565b92915050565b60006020820190508181036000830152612e4a818461286b565b905092915050565b60006060820190508181036000830152612e6c818661286b565b9050612e7b6020830185612c33565b612e886040830184612814565b949350505050565b60006020820190508181036000830152612ea981612954565b9050919050565b60006020820190508181036000830152612ec981612977565b9050919050565b60006020820190508181036000830152612ee98161299a565b9050919050565b60006020820190508181036000830152612f09816129bd565b9050919050565b60006020820190508181036000830152612f29816129e0565b9050919050565b60006020820190508181036000830152612f4981612a26565b9050919050565b60006020820190508181036000830152612f6981612a6c565b9050919050565b60006020820190508181036000830152612f8981612a8f565b9050919050565b60006020820190508181036000830152612fa981612ab2565b9050919050565b60006020820190508181036000830152612fc981612ad5565b9050919050565b60006020820190508181036000830152612fe981612b1b565b9050919050565b6000602082019050818103600083015261300981612b3e565b9050919050565b6000602082019050818103600083015261302981612b61565b9050919050565b6000602082019050818103600083015261304981612b84565b9050919050565b6000602082019050818103600083015261306981612bca565b9050919050565b6000602082019050818103600083015261308981612c10565b9050919050565b60006020820190506130a56000830184612c33565b92915050565b60006130b56130c6565b90506130c182826133b3565b919050565b6000604051905090565b600067ffffffffffffffff8211156130eb576130ea6134eb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613117576131166134eb565b5b6131208261351a565b9050602081019050919050565b600067ffffffffffffffff821115613148576131476134eb565b5b6131518261351a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006131c182613335565b91506131cc83613335565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132015761320061345e565b5b828201905092915050565b600061321782613335565b915061322283613335565b9250826132325761323161348d565b5b828204905092915050565b600061324882613335565b915061325383613335565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561328c5761328b61345e565b5b828202905092915050565b60006132a282613335565b91506132ad83613335565b9250828210156132c0576132bf61345e565b5b828203905092915050565b60006132d682613315565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561336c578082015181840152602081019050613351565b8381111561337b576000848401525b50505050565b6000600282049050600182168061339957607f821691505b602082108114156133ad576133ac6134bc565b5b50919050565b6133bc8261351a565b810181811067ffffffffffffffff821117156133db576133da6134eb565b5b80604052505050565b60006133ef82613335565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134225761342161345e565b5b600182019050919050565b600061343882613335565b915061344383613335565b9250826134535761345261348d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613af1816132cb565b8114613afc57600080fd5b50565b613b08816132dd565b8114613b1357600080fd5b50565b613b1f816132e9565b8114613b2a57600080fd5b50565b613b3681613335565b8114613b4157600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208835271af283586e8475ff0dbf4b9d6bb622983065d1b39b658693cf8897e61664736f6c634300080400333b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20323470783b207d3c2f7374796c653e3c726563742077696474683d273130302527206865696768743d2731303025272066696c6c3d27626c61636b27202f3e3c7465787420783d273530252720793d273530252720636c6173733d27626173652720646f6d696e616e742d626173656c696e653d276d6964646c652720746578742d616e63686f723d276d6964646c65273e3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f73766727207072657365727665417370656374526174696f3d27784d696e594d696e206d656574272076696577426f783d273020302033353020333530273e3c7374796c653e2e62617365207b2066696c6c3a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101d657806370a082311461020657806395d89b41146102365780639a99608b14610254576100f5565b8063095ea7b3116100d3578063095ea7b3146101785780631249c58b1461019457806323b872dd1461019e57806342842e0e146101ba576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190612799565b61031c565b6040516101219190612e15565b60405180910390f35b6101326103fe565b60405161013f9190612e30565b60405180910390f35b610162600480360381019061015d91906127eb565b610490565b60405161016f9190612d85565b60405180910390f35b610192600480360381019061018d91906126de565b610515565b005b61019c61062d565b005b6101b860048036038101906101b391906125d8565b610c6a565b005b6101d460048036038101906101cf91906125d8565b610cca565b005b6101f060048036038101906101eb91906127eb565b610cea565b6040516101fd9190612d85565b60405180910390f35b610220600480360381019061021b9190612573565b610d9c565b60405161022d9190613090565b60405180910390f35b61023e610e54565b60405161024b9190612e30565b60405180910390f35b61026e6004803603810190610269919061271a565b610ee6565b60405161027b9190612e30565b60405180910390f35b61029e600480360381019061029991906126a2565b610f78565b005b6102ba60048036038101906102b59190612627565b610f8e565b005b6102d660048036038101906102d191906127eb565b610ff0565b6040516102e39190612e30565b60405180910390f35b6103066004803603810190610301919061259c565b611142565b6040516103139190612e15565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806103f757506103f68261126f565b5b9050919050565b60606000805461040d90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461043990613381565b80156104865780601f1061045b57610100808354040283529160200191610486565b820191906000526020600020905b81548152906001019060200180831161046957829003601f168201915b5050505050905090565b600061049b826112d9565b6104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d190613010565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061052082610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890613050565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105b0611345565b73ffffffffffffffffffffffffffffffffffffffff1614806105df57506105de816105d9611345565b611142565b5b61061e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061590612f50565b60405180910390fd5b610628838361134d565b505050565b60006106396007611406565b9050600061074e600a805480602002602001604051908101604052809291908181526020016000905b8282101561070e57838290600052602060002001805461068190613381565b80601f01602080910402602001604051908101604052809291908181526020018280546106ad90613381565b80156106fa5780601f106106cf576101008083540402835291602001916106fa565b820191906000526020600020905b8154815290600101906020018083116106dd57829003601f168201915b505050505081526020019060010190610662565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610ee6565b90506000610863600b805480602002602001604051908101604052809291908181526020016000905b8282101561082357838290600052602060002001805461079690613381565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290613381565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505050505081526020019060010190610777565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610ee6565b90506000610978600c805480602002602001604051908101604052809291908181526020016000905b828210156109385783829060005260206000200180546108ab90613381565b80601f01602080910402602001604051908101604052809291908181526020018280546108d790613381565b80156109245780601f106108f957610100808354040283529160200191610924565b820191906000526020600020905b81548152906001019060200180831161090757829003601f168201915b50505050508152602001906001019061088c565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610ee6565b90506000610a8d600d805480602002602001604051908101604052809291908181526020016000905b82821015610a4d5783829060005260206000200180546109c090613381565b80601f01602080910402602001604051908101604052809291908181526020018280546109ec90613381565b8015610a395780601f10610a0e57610100808354040283529160200191610a39565b820191906000526020600020905b815481529060010190602001808311610a1c57829003601f168201915b5050505050815260200190600101906109a1565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610ee6565b9050600084848484604051602001610aa89493929190612c7d565b604051602081830303815290604052905060006008866009878787604051602001610ad896959493929190612cbb565b60405160208183030381529060405290506000610b1d83610af884611414565b604051602001610b09929190612d1e565b604051602081830303815290604052611414565b9050600081604051602001610b329190612d63565b6040516020818303038152906040529050610b816040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d00000000000000000000008152506111d6565b610b8a816111d6565b610bc86040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a00000000000000000000008152506111d6565b610bd2338a6115d2565b610bdc89826115f0565b610c1c6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a33611664565b610c266007611703565b7febb98688741ffa4c7589bf325de30cf7becb63de567842e1ccdb6cb949fdc82c338a604051610c57929190612dec565b60405180910390a1505050505050505050565b610c7b610c75611345565b82611719565b610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613070565b60405180910390fd5b610cc58383836117f7565b505050565b610ce583838360405180602001604052806000815250610f8e565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90612f90565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0490612f70565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610e6390613381565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8f90613381565b8015610edc5780601f10610eb157610100808354040283529160200191610edc565b820191906000526020600020905b815481529060010190602001808311610ebf57829003601f168201915b5050505050905090565b60606000610f1c84610ef785611a5e565b604051602001610f08929190612c59565b604051602081830303815290604052611c0b565b9050845181610f2b919061342d565b9050848181518110610f66577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b610f8a610f83611345565b8383611c3e565b5050565b610f9f610f99611345565b83611719565b610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd590613070565b60405180910390fd5b610fea84848484611dab565b50505050565b6060610ffb826112d9565b61103a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103190612ff0565b60405180910390fd5b600060066000848152602001908152602001600020805461105a90613381565b80601f016020809104026020016040519081016040528092919081815260200182805461108690613381565b80156110d35780601f106110a8576101008083540402835291602001916110d3565b820191906000526020600020905b8154815290600101906020018083116110b657829003601f168201915b5050505050905060006110e4611e07565b90506000815114156110fa57819250505061113d565b60008251111561112f578082604051602001611117929190612c59565b6040516020818303038152906040529250505061113d565b61113884611e1e565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61126c816040516024016111ea9190612e30565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166113c083610cea565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6060600082519050600081141561143d57604051806020016040528060008152509150506115cd565b6000600360028361144e91906131b6565b611458919061320c565b6004611464919061323d565b9050600060208261147591906131b6565b67ffffffffffffffff8111156114b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156114e65781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613b45604091399050600181016020830160005b8681101561158a5760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050611511565b5060038606600181146115a457600281146115b4576115bf565b613d3d60f01b60028303526115bf565b603d60f81b60018303525b508484525050819450505050505b919050565b6115ec828260405180602001604052806000815250611eee565b5050565b6115f9826112d9565b611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612fb0565b60405180910390fd5b8060066000848152602001908152602001600020908051906020019061165f9291906122e7565b505050565b6116fe83838360405160240161167c93929190612e52565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ec5565b505050565b6001816000016000828254019250508190555050565b6000611724826112d9565b611763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175a90612f30565b60405180910390fd5b600061176e83610cea565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117dd57508373ffffffffffffffffffffffffffffffffffffffff166117c584610490565b73ffffffffffffffffffffffffffffffffffffffff16145b806117ee57506117ed8185611142565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661181782610cea565b73ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490612eb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490612ef0565b60405180910390fd5b6118e8838383611f49565b6118f360008261134d565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119439190613297565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199a91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a59838383611f4e565b505050565b60606000821415611aa6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c06565b600082905060005b60008214611ad8578080611ac1906133e4565b915050600a82611ad1919061320c565b9150611aae565b60008167ffffffffffffffff811115611b1a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611b4c5781602001600182028036833780820191505090505b5090505b60008514611bff57600182611b659190613297565b9150600a85611b74919061342d565b6030611b8091906131b6565b60f81b818381518110611bbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611bf8919061320c565b9450611b50565b8093505050505b919050565b600081604051602001611c1e9190612c42565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490612f10565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d9e9190612e15565b60405180910390a3505050565b611db68484846117f7565b611dc284848484611f53565b611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df890612e90565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611e29826112d9565b611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90613030565b60405180910390fd5b6000611e72611e07565b90506000815111611e925760405180602001604052806000815250611ebd565b80611e9c84611a5e565b604051602001611ead929190612c59565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611ef883836120ea565b611f056000848484611f53565b611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90612e90565b60405180910390fd5b505050565b505050565b505050565b6000611f748473ffffffffffffffffffffffffffffffffffffffff166122c4565b156120dd578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f9d611345565b8786866040518563ffffffff1660e01b8152600401611fbf9493929190612da0565b602060405180830381600087803b158015611fd957600080fd5b505af192505050801561200a57506040513d601f19601f8201168201806040525081019061200791906127c2565b60015b61208d573d806000811461203a576040519150601f19603f3d011682016040523d82523d6000602084013e61203f565b606091505b50600081511415612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207c90612e90565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506120e2565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215190612fd0565b60405180910390fd5b612163816112d9565b156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90612ed0565b60405180910390fd5b6121af60008383611f49565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121ff91906131b6565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122c060008383611f4e565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546122f390613381565b90600052602060002090601f016020900481019282612315576000855561235c565b82601f1061232e57805160ff191683800117855561235c565b8280016001018555821561235c579182015b8281111561235b578251825591602001919060010190612340565b5b509050612369919061236d565b5090565b5b8082111561238657600081600090555060010161236e565b5090565b600061239d612398846130d0565b6130ab565b905080838252602082019050828560208602820111156123bc57600080fd5b60005b8581101561240657813567ffffffffffffffff8111156123de57600080fd5b8086016123eb8982612534565b855260208501945060208401935050506001810190506123bf565b5050509392505050565b600061242361241e846130fc565b6130ab565b90508281526020810184848401111561243b57600080fd5b61244684828561333f565b509392505050565b600061246161245c8461312d565b6130ab565b90508281526020810184848401111561247957600080fd5b61248484828561333f565b509392505050565b60008135905061249b81613ae8565b92915050565b600082601f8301126124b257600080fd5b81356124c284826020860161238a565b91505092915050565b6000813590506124da81613aff565b92915050565b6000813590506124ef81613b16565b92915050565b60008151905061250481613b16565b92915050565b600082601f83011261251b57600080fd5b813561252b848260208601612410565b91505092915050565b600082601f83011261254557600080fd5b813561255584826020860161244e565b91505092915050565b60008135905061256d81613b2d565b92915050565b60006020828403121561258557600080fd5b60006125938482850161248c565b91505092915050565b600080604083850312156125af57600080fd5b60006125bd8582860161248c565b92505060206125ce8582860161248c565b9150509250929050565b6000806000606084860312156125ed57600080fd5b60006125fb8682870161248c565b935050602061260c8682870161248c565b925050604061261d8682870161255e565b9150509250925092565b6000806000806080858703121561263d57600080fd5b600061264b8782880161248c565b945050602061265c8782880161248c565b935050604061266d8782880161255e565b925050606085013567ffffffffffffffff81111561268a57600080fd5b6126968782880161250a565b91505092959194509250565b600080604083850312156126b557600080fd5b60006126c38582860161248c565b92505060206126d4858286016124cb565b9150509250929050565b600080604083850312156126f157600080fd5b60006126ff8582860161248c565b92505060206127108582860161255e565b9150509250929050565b60008060006060848603121561272f57600080fd5b600084013567ffffffffffffffff81111561274957600080fd5b612755868287016124a1565b935050602084013567ffffffffffffffff81111561277257600080fd5b61277e86828701612534565b925050604061278f8682870161255e565b9150509250925092565b6000602082840312156127ab57600080fd5b60006127b9848285016124e0565b91505092915050565b6000602082840312156127d457600080fd5b60006127e2848285016124f5565b91505092915050565b6000602082840312156127fd57600080fd5b600061280b8482850161255e565b91505092915050565b61281d816132cb565b82525050565b61282c816132dd565b82525050565b600061283d82613173565b6128478185613189565b935061285781856020860161334e565b6128608161351a565b840191505092915050565b60006128768261317e565b612880818561319a565b935061289081856020860161334e565b6128998161351a565b840191505092915050565b60006128af8261317e565b6128b981856131ab565b93506128c981856020860161334e565b80840191505092915050565b600081546128e281613381565b6128ec81866131ab565b9450600182166000811461290757600181146129185761294b565b60ff1983168652818601935061294b565b6129218561315e565b60005b8381101561294357815481890152600182019150602081019050612924565b838801955050505b50505092915050565b600061296160328361319a565b915061296c8261352b565b604082019050919050565b600061298460258361319a565b915061298f8261357a565b604082019050919050565b60006129a7601c8361319a565b91506129b2826135c9565b602082019050919050565b60006129ca60248361319a565b91506129d5826135f2565b604082019050919050565b60006129ed60198361319a565b91506129f882613641565b602082019050919050565b6000612a106063836131ab565b9150612a1b8261366a565b606382019050919050565b6000612a33602c8361319a565b9150612a3e82613705565b604082019050919050565b6000612a56600d836131ab565b9150612a6182613754565b600d82019050919050565b6000612a7960388361319a565b9150612a848261377d565b604082019050919050565b6000612a9c602a8361319a565b9150612aa7826137cc565b604082019050919050565b6000612abf60298361319a565b9150612aca8261381b565b604082019050919050565b6000612ae2602e8361319a565b9150612aed8261386a565b604082019050919050565b6000612b056002836131ab565b9150612b10826138b9565b600282019050919050565b6000612b2860208361319a565b9150612b33826138e2565b602082019050919050565b6000612b4b60318361319a565b9150612b568261390b565b604082019050919050565b6000612b6e602c8361319a565b9150612b798261395a565b604082019050919050565b6000612b91602f8361319a565b9150612b9c826139a9565b604082019050919050565b6000612bb4600a836131ab565b9150612bbf826139f8565b600a82019050919050565b6000612bd760218361319a565b9150612be282613a21565b604082019050919050565b6000612bfa601d836131ab565b9150612c0582613a70565b601d82019050919050565b6000612c1d60318361319a565b9150612c2882613a99565b604082019050919050565b612c3c81613335565b82525050565b6000612c4e82846128a4565b915081905092915050565b6000612c6582856128a4565b9150612c7182846128a4565b91508190509392505050565b6000612c8982876128a4565b9150612c9582866128a4565b9150612ca182856128a4565b9150612cad82846128a4565b915081905095945050505050565b6000612cc782896128d5565b9150612cd382886128a4565b9150612cdf82876128d5565b9150612ceb82866128a4565b9150612cf782856128a4565b9150612d0382846128a4565b9150612d0e82612a49565b9150819050979650505050505050565b6000612d2982612ba7565b9150612d3582856128a4565b9150612d4082612a03565b9150612d4c82846128a4565b9150612d5782612af8565b91508190509392505050565b6000612d6e82612bed565b9150612d7a82846128a4565b915081905092915050565b6000602082019050612d9a6000830184612814565b92915050565b6000608082019050612db56000830187612814565b612dc26020830186612814565b612dcf6040830185612c33565b8181036060830152612de18184612832565b905095945050505050565b6000604082019050612e016000830185612814565b612e0e6020830184612c33565b9392505050565b6000602082019050612e2a6000830184612823565b92915050565b60006020820190508181036000830152612e4a818461286b565b905092915050565b60006060820190508181036000830152612e6c818661286b565b9050612e7b6020830185612c33565b612e886040830184612814565b949350505050565b60006020820190508181036000830152612ea981612954565b9050919050565b60006020820190508181036000830152612ec981612977565b9050919050565b60006020820190508181036000830152612ee98161299a565b9050919050565b60006020820190508181036000830152612f09816129bd565b9050919050565b60006020820190508181036000830152612f29816129e0565b9050919050565b60006020820190508181036000830152612f4981612a26565b9050919050565b60006020820190508181036000830152612f6981612a6c565b9050919050565b60006020820190508181036000830152612f8981612a8f565b9050919050565b60006020820190508181036000830152612fa981612ab2565b9050919050565b60006020820190508181036000830152612fc981612ad5565b9050919050565b60006020820190508181036000830152612fe981612b1b565b9050919050565b6000602082019050818103600083015261300981612b3e565b9050919050565b6000602082019050818103600083015261302981612b61565b9050919050565b6000602082019050818103600083015261304981612b84565b9050919050565b6000602082019050818103600083015261306981612bca565b9050919050565b6000602082019050818103600083015261308981612c10565b9050919050565b60006020820190506130a56000830184612c33565b92915050565b60006130b56130c6565b90506130c182826133b3565b919050565b6000604051905090565b600067ffffffffffffffff8211156130eb576130ea6134eb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613117576131166134eb565b5b6131208261351a565b9050602081019050919050565b600067ffffffffffffffff821115613148576131476134eb565b5b6131518261351a565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006131c182613335565b91506131cc83613335565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132015761320061345e565b5b828201905092915050565b600061321782613335565b915061322283613335565b9250826132325761323161348d565b5b828204905092915050565b600061324882613335565b915061325383613335565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561328c5761328b61345e565b5b828202905092915050565b60006132a282613335565b91506132ad83613335565b9250828210156132c0576132bf61345e565b5b828203905092915050565b60006132d682613315565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561336c578082015181840152602081019050613351565b8381111561337b576000848401525b50505050565b6000600282049050600182168061339957607f821691505b602082108114156133ad576133ac6134bc565b5b50919050565b6133bc8261351a565b810181811067ffffffffffffffff821117156133db576133da6134eb565b5b80604052505050565b60006133ef82613335565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134225761342161345e565b5b600182019050919050565b600061343882613335565b915061344383613335565b9250826134535761345261348d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613af1816132cb565b8114613afc57600080fd5b50565b613b08816132dd565b8114613b1357600080fd5b50565b613b1f816132e9565b8114613b2a57600080fd5b50565b613b3681613335565b8114613b4157600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212208835271af283586e8475ff0dbf4b9d6bb622983065d1b39b658693cf8897e61664736f6c63430008040033", + "bytecode": "0x608060405260326008556040518060a001604052806076815260200162004d3c60769139600990805190602001906200003a92919062000c5a565b506040518060e0016040528060b3815260200162004c8960b39139600a90805190602001906200006c92919062000c5a565b506040518061014001604052806040518060400160405280600381526020017f726564000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f677265656e00000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f626c75650000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f776869746500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f79656c6c6f77000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f6379616e0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f70696e6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f6d6167656e74610000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f73696c766572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f676f6c6400000000000000000000000000000000000000000000000000000000815250815250600b90600a620002d792919062000ceb565b506040518061014001604052806040518060400160405280600481526020017f457069630000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4c6567656e64617279000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865726f6963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6c0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f46616e746173746963000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5465727269626c6500000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4372617a7900000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f57696c640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f54657272696679696e670000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f53706f6f6b790000000000000000000000000000000000000000000000000000815250815250600c90600a6200054292919062000ceb565b506040518061018001604052806040518060400160405280600881526020017f417373617373696e00000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f436c65726963000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f526f67756500000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600581526020017f4e696e6a6100000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f4c6f72640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f57697a617264000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600781526020017f57617272696f720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f4265727365726b6572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600b81526020017f4e6563726f6d616e64657200000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f53756d6d6f6e657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f426172640000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4c616e6365720000000000000000000000000000000000000000000000000000815250815250600d90600c6200082392919062000d52565b506040518061014001604052806040518060400160405280600781526020017f536f6c646965720000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4865616c6572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4578706c6f72657200000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f4d65726368616e7400000000000000000000000000000000000000000000000081525081526020016040518060400160405280600981526020017f446576656c6f706572000000000000000000000000000000000000000000000081525081526020016040518060400160405280600a81526020017f426c61636b536d6974680000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f4869746d616e000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600481526020017f436f6f6b0000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f48756e746572000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600681526020017f5361696c6f720000000000000000000000000000000000000000000000000000815250815250600e90600a62000a8e92919062000ceb565b5034801562000a9c57600080fd5b506040518060400160405280600981526020017f5371756172654e465400000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5351554152450000000000000000000000000000000000000000000000000000815250816000908051906020019062000b2192919062000c5a565b50806001908051906020019062000b3a92919062000c5a565b50505062000b886040518060400160405280601e81526020017f4d79206669727374204e465420636f6e7472616374212045504943212121000081525062000b8e60201b620012901760201c565b62000f73565b62000c2e8160405160240162000ba5919062000e87565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505062000c3160201b60201c565b50565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b82805462000c689062000efd565b90600052602060002090601f01602090048101928262000c8c576000855562000cd8565b82601f1062000ca757805160ff191683800117855562000cd8565b8280016001018555821562000cd8579182015b8281111562000cd757825182559160200191906001019062000cba565b5b50905062000ce7919062000db9565b5090565b82805482825590600052602060002090810192821562000d3f579160200282015b8281111562000d3e57825182908051906020019062000d2d92919062000c5a565b509160200191906001019062000d0c565b5b50905062000d4e919062000dd8565b5090565b82805482825590600052602060002090810192821562000da6579160200282015b8281111562000da557825182908051906020019062000d9492919062000c5a565b509160200191906001019062000d73565b5b50905062000db5919062000dd8565b5090565b5b8082111562000dd457600081600090555060010162000dba565b5090565b5b8082111562000dfc576000818162000df2919062000e00565b5060010162000dd9565b5090565b50805462000e0e9062000efd565b6000825580601f1062000e22575062000e43565b601f01602090049060005260206000209081019062000e42919062000db9565b5b50565b600062000e538262000eab565b62000e5f818562000eb6565b935062000e7181856020860162000ec7565b62000e7c8162000f62565b840191505092915050565b6000602082019050818103600083015262000ea3818462000e46565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ee757808201518184015260208101905062000eca565b8381111562000ef7576000848401525b50505050565b6000600282049050600182168062000f1657607f821691505b6020821081141562000f2d5762000f2c62000f33565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613d068062000f836000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb465146102b8578063b88d4fde146102d4578063c87b56dd146102f0578063e61e8b9b14610320578063e985e9c51461033e5761010b565b806370a082311461021c57806395d89b411461024c57806397017d901461026a5780639a99608b146102885761010b565b80631249c58b116100de5780631249c58b146101aa57806323b872dd146101b457806342842e0e146101d05780636352211e146101ec5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190612853565b61036e565b6040516101379190612ef2565b60405180910390f35b610148610450565b6040516101559190612f0d565b60405180910390f35b610178600480360381019061017391906128a5565b6104e2565b6040516101859190612e62565b60405180910390f35b6101a860048036038101906101a39190612798565b610567565b005b6101b261067f565b005b6101ce60048036038101906101c99190612692565b610d09565b005b6101ea60048036038101906101e59190612692565b610d69565b005b610206600480360381019061020191906128a5565b610d89565b6040516102139190612e62565b60405180910390f35b6102366004803603810190610231919061262d565b610e3b565b604051610243919061318d565b60405180910390f35b610254610ef3565b6040516102619190612f0d565b60405180910390f35b610272610f85565b60405161027f919061318d565b60405180910390f35b6102a2600480360381019061029d91906127d4565b610f8f565b6040516102af9190612f0d565b60405180910390f35b6102d260048036038101906102cd919061275c565b611021565b005b6102ee60048036038101906102e991906126e1565b611037565b005b61030a600480360381019061030591906128a5565b611099565b6040516103179190612f0d565b60405180910390f35b6103286111eb565b604051610335919061318d565b60405180910390f35b61035860048036038101906103539190612656565b6111fc565b6040516103659190612ef2565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610449575061044882611329565b5b9050919050565b60606000805461045f9061347e565b80601f016020809104026020016040519081016040528092919081815260200182805461048b9061347e565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b60006104ed82611393565b61052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610523906130ed565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061057282610d89565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da9061314d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106026113ff565b73ffffffffffffffffffffffffffffffffffffffff16148061063157506106308161062b6113ff565b6111fc565b5b610670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106679061302d565b60405180910390fd5b61067a8383611407565b505050565b60085461068c60076114c0565b106106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c39061310d565b60405180910390fd5b60006106d860076114c0565b905060006107ed600b805480602002602001604051908101604052809291908181526020016000905b828210156107ad5783829060005260206000200180546107209061347e565b80601f016020809104026020016040519081016040528092919081815260200182805461074c9061347e565b80156107995780601f1061076e57610100808354040283529160200191610799565b820191906000526020600020905b81548152906001019060200180831161077c57829003601f168201915b505050505081526020019060010190610701565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610f8f565b90506000610902600c805480602002602001604051908101604052809291908181526020016000905b828210156108c25783829060005260206000200180546108359061347e565b80601f01602080910402602001604051908101604052809291908181526020018280546108619061347e565b80156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b505050505081526020019060010190610816565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610f8f565b90506000610a17600d805480602002602001604051908101604052809291908181526020016000905b828210156109d757838290600052602060002001805461094a9061347e565b80601f01602080910402602001604051908101604052809291908181526020018280546109769061347e565b80156109c35780601f10610998576101008083540402835291602001916109c3565b820191906000526020600020905b8154815290600101906020018083116109a657829003601f168201915b50505050508152602001906001019061092b565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610f8f565b90506000610b2c600e805480602002602001604051908101604052809291908181526020016000905b82821015610aec578382906000526020600020018054610a5f9061347e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8b9061347e565b8015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b505050505081526020019060010190610a40565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610f8f565b9050600084848484604051602001610b479493929190612d5a565b60405160208183030381529060405290506000600986600a878787604051602001610b7796959493929190612d98565b60405160208183030381529060405290506000610bbc83610b97846114ce565b604051602001610ba8929190612dfb565b6040516020818303038152906040526114ce565b9050600081604051602001610bd19190612e40565b6040516020818303038152906040529050610c206040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0000000000000000000000815250611290565b610c2981611290565b610c676040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0000000000000000000000815250611290565b610c71338a61168c565b610c7b89826116aa565b610cbb6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a3361171e565b610cc560076117bd565b7febb98688741ffa4c7589bf325de30cf7becb63de567842e1ccdb6cb949fdc82c338a604051610cf6929190612ec9565b60405180910390a1505050505050505050565b610d1a610d146113ff565b826117d3565b610d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d509061316d565b60405180910390fd5b610d648383836118b1565b505050565b610d8483838360405180602001604052806000815250611037565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e299061306d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea39061304d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610f029061347e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2e9061347e565b8015610f7b5780601f10610f5057610100808354040283529160200191610f7b565b820191906000526020600020905b815481529060010190602001808311610f5e57829003601f168201915b5050505050905090565b6000600854905090565b60606000610fc584610fa085611b18565b604051602001610fb1929190612d36565b604051602081830303815290604052611cc5565b9050845181610fd4919061352a565b905084818151811061100f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b61103361102c6113ff565b8383611cf8565b5050565b6110486110426113ff565b836117d3565b611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e9061316d565b60405180910390fd5b61109384848484611e65565b50505050565b60606110a482611393565b6110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906130cd565b60405180910390fd5b60006006600084815260200190815260200160002080546111039061347e565b80601f016020809104026020016040519081016040528092919081815260200182805461112f9061347e565b801561117c5780601f106111515761010080835404028352916020019161117c565b820191906000526020600020905b81548152906001019060200180831161115f57829003601f168201915b50505050509050600061118d611ec1565b90506000815114156111a35781925050506111e6565b6000825111156111d85780826040516020016111c0929190612d36565b604051602081830303815290604052925050506111e6565b6111e184611ed8565b925050505b919050565b60006111f760076114c0565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611326816040516024016112a49190612f0d565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f7f565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661147a83610d89565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b606060008251905060008114156114f75760405180602001604052806000815250915050611687565b6000600360028361150891906132b3565b6115129190613309565b600461151e919061333a565b9050600060208261152f91906132b3565b67ffffffffffffffff81111561156e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115a05781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613c91604091399050600181016020830160005b868110156116445760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b905080845260048401935050506115cb565b50600386066001811461165e576002811461166e57611679565b613d3d60f01b6002830352611679565b603d60f81b60018303525b508484525050819450505050505b919050565b6116a6828260405180602001604052806000815250611fa8565b5050565b6116b382611393565b6116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e99061308d565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906117199291906123a1565b505050565b6117b883838360405160240161173693929190612f2f565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f7f565b505050565b6001816000016000828254019250508190555050565b60006117de82611393565b61181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149061300d565b60405180910390fd5b600061182883610d89565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061189757508373ffffffffffffffffffffffffffffffffffffffff1661187f846104e2565b73ffffffffffffffffffffffffffffffffffffffff16145b806118a857506118a781856111fc565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166118d182610d89565b73ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90612f8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e90612fcd565b60405180910390fd5b6119a2838383612003565b6119ad600082611407565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119fd9190613394565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a5491906132b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b13838383612008565b505050565b60606000821415611b60576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611cc0565b600082905060005b60008214611b92578080611b7b906134e1565b915050600a82611b8b9190613309565b9150611b68565b60008167ffffffffffffffff811115611bd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611c065781602001600182028036833780820191505090505b5090505b60008514611cb957600182611c1f9190613394565b9150600a85611c2e919061352a565b6030611c3a91906132b3565b60f81b818381518110611c76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611cb29190613309565b9450611c0a565b8093505050505b919050565b600081604051602001611cd89190612d1f565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e90612fed565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e589190612ef2565b60405180910390a3505050565b611e708484846118b1565b611e7c8484848461200d565b611ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb290612f6d565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611ee382611393565b611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f199061312d565b60405180910390fd5b6000611f2c611ec1565b90506000815111611f4c5760405180602001604052806000815250611f77565b80611f5684611b18565b604051602001611f67929190612d36565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611fb283836121a4565b611fbf600084848461200d565b611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff590612f6d565b60405180910390fd5b505050565b505050565b505050565b600061202e8473ffffffffffffffffffffffffffffffffffffffff1661237e565b15612197578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026120576113ff565b8786866040518563ffffffff1660e01b81526004016120799493929190612e7d565b602060405180830381600087803b15801561209357600080fd5b505af19250505080156120c457506040513d601f19601f820116820180604052508101906120c1919061287c565b60015b612147573d80600081146120f4576040519150601f19603f3d011682016040523d82523d6000602084013e6120f9565b606091505b5060008151141561213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690612f6d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061219c565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b906130ad565b60405180910390fd5b61221d81611393565b1561225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490612fad565b60405180910390fd5b61226960008383612003565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122b991906132b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461237a60008383612008565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546123ad9061347e565b90600052602060002090601f0160209004810192826123cf5760008555612416565b82601f106123e857805160ff1916838001178555612416565b82800160010185558215612416579182015b828111156124155782518255916020019190600101906123fa565b5b5090506124239190612427565b5090565b5b80821115612440576000816000905550600101612428565b5090565b6000612457612452846131cd565b6131a8565b9050808382526020820190508285602086028201111561247657600080fd5b60005b858110156124c057813567ffffffffffffffff81111561249857600080fd5b8086016124a589826125ee565b85526020850194506020840193505050600181019050612479565b5050509392505050565b60006124dd6124d8846131f9565b6131a8565b9050828152602081018484840111156124f557600080fd5b61250084828561343c565b509392505050565b600061251b6125168461322a565b6131a8565b90508281526020810184848401111561253357600080fd5b61253e84828561343c565b509392505050565b60008135905061255581613c34565b92915050565b600082601f83011261256c57600080fd5b813561257c848260208601612444565b91505092915050565b60008135905061259481613c4b565b92915050565b6000813590506125a981613c62565b92915050565b6000815190506125be81613c62565b92915050565b600082601f8301126125d557600080fd5b81356125e58482602086016124ca565b91505092915050565b600082601f8301126125ff57600080fd5b813561260f848260208601612508565b91505092915050565b60008135905061262781613c79565b92915050565b60006020828403121561263f57600080fd5b600061264d84828501612546565b91505092915050565b6000806040838503121561266957600080fd5b600061267785828601612546565b925050602061268885828601612546565b9150509250929050565b6000806000606084860312156126a757600080fd5b60006126b586828701612546565b93505060206126c686828701612546565b92505060406126d786828701612618565b9150509250925092565b600080600080608085870312156126f757600080fd5b600061270587828801612546565b945050602061271687828801612546565b935050604061272787828801612618565b925050606085013567ffffffffffffffff81111561274457600080fd5b612750878288016125c4565b91505092959194509250565b6000806040838503121561276f57600080fd5b600061277d85828601612546565b925050602061278e85828601612585565b9150509250929050565b600080604083850312156127ab57600080fd5b60006127b985828601612546565b92505060206127ca85828601612618565b9150509250929050565b6000806000606084860312156127e957600080fd5b600084013567ffffffffffffffff81111561280357600080fd5b61280f8682870161255b565b935050602084013567ffffffffffffffff81111561282c57600080fd5b612838868287016125ee565b925050604061284986828701612618565b9150509250925092565b60006020828403121561286557600080fd5b60006128738482850161259a565b91505092915050565b60006020828403121561288e57600080fd5b600061289c848285016125af565b91505092915050565b6000602082840312156128b757600080fd5b60006128c584828501612618565b91505092915050565b6128d7816133c8565b82525050565b6128e6816133da565b82525050565b60006128f782613270565b6129018185613286565b935061291181856020860161344b565b61291a81613617565b840191505092915050565b60006129308261327b565b61293a8185613297565b935061294a81856020860161344b565b61295381613617565b840191505092915050565b60006129698261327b565b61297381856132a8565b935061298381856020860161344b565b80840191505092915050565b6000815461299c8161347e565b6129a681866132a8565b945060018216600081146129c157600181146129d257612a05565b60ff19831686528186019350612a05565b6129db8561325b565b60005b838110156129fd578154818901526001820191506020810190506129de565b838801955050505b50505092915050565b6000612a1b603283613297565b9150612a2682613628565b604082019050919050565b6000612a3e602583613297565b9150612a4982613677565b604082019050919050565b6000612a61601c83613297565b9150612a6c826136c6565b602082019050919050565b6000612a84602483613297565b9150612a8f826136ef565b604082019050919050565b6000612aa7601983613297565b9150612ab28261373e565b602082019050919050565b6000612aca6063836132a8565b9150612ad582613767565b606382019050919050565b6000612aed602c83613297565b9150612af882613802565b604082019050919050565b6000612b10600d836132a8565b9150612b1b82613851565b600d82019050919050565b6000612b33603883613297565b9150612b3e8261387a565b604082019050919050565b6000612b56602a83613297565b9150612b61826138c9565b604082019050919050565b6000612b79602983613297565b9150612b8482613918565b604082019050919050565b6000612b9c602e83613297565b9150612ba782613967565b604082019050919050565b6000612bbf6002836132a8565b9150612bca826139b6565b600282019050919050565b6000612be2602083613297565b9150612bed826139df565b602082019050919050565b6000612c05603183613297565b9150612c1082613a08565b604082019050919050565b6000612c28602c83613297565b9150612c3382613a57565b604082019050919050565b6000612c4b602e83613297565b9150612c5682613aa6565b604082019050919050565b6000612c6e602f83613297565b9150612c7982613af5565b604082019050919050565b6000612c91600a836132a8565b9150612c9c82613b44565b600a82019050919050565b6000612cb4602183613297565b9150612cbf82613b6d565b604082019050919050565b6000612cd7601d836132a8565b9150612ce282613bbc565b601d82019050919050565b6000612cfa603183613297565b9150612d0582613be5565b604082019050919050565b612d1981613432565b82525050565b6000612d2b828461295e565b915081905092915050565b6000612d42828561295e565b9150612d4e828461295e565b91508190509392505050565b6000612d66828761295e565b9150612d72828661295e565b9150612d7e828561295e565b9150612d8a828461295e565b915081905095945050505050565b6000612da4828961298f565b9150612db0828861295e565b9150612dbc828761298f565b9150612dc8828661295e565b9150612dd4828561295e565b9150612de0828461295e565b9150612deb82612b03565b9150819050979650505050505050565b6000612e0682612c84565b9150612e12828561295e565b9150612e1d82612abd565b9150612e29828461295e565b9150612e3482612bb2565b91508190509392505050565b6000612e4b82612cca565b9150612e57828461295e565b915081905092915050565b6000602082019050612e7760008301846128ce565b92915050565b6000608082019050612e9260008301876128ce565b612e9f60208301866128ce565b612eac6040830185612d10565b8181036060830152612ebe81846128ec565b905095945050505050565b6000604082019050612ede60008301856128ce565b612eeb6020830184612d10565b9392505050565b6000602082019050612f0760008301846128dd565b92915050565b60006020820190508181036000830152612f278184612925565b905092915050565b60006060820190508181036000830152612f498186612925565b9050612f586020830185612d10565b612f6560408301846128ce565b949350505050565b60006020820190508181036000830152612f8681612a0e565b9050919050565b60006020820190508181036000830152612fa681612a31565b9050919050565b60006020820190508181036000830152612fc681612a54565b9050919050565b60006020820190508181036000830152612fe681612a77565b9050919050565b6000602082019050818103600083015261300681612a9a565b9050919050565b6000602082019050818103600083015261302681612ae0565b9050919050565b6000602082019050818103600083015261304681612b26565b9050919050565b6000602082019050818103600083015261306681612b49565b9050919050565b6000602082019050818103600083015261308681612b6c565b9050919050565b600060208201905081810360008301526130a681612b8f565b9050919050565b600060208201905081810360008301526130c681612bd5565b9050919050565b600060208201905081810360008301526130e681612bf8565b9050919050565b6000602082019050818103600083015261310681612c1b565b9050919050565b6000602082019050818103600083015261312681612c3e565b9050919050565b6000602082019050818103600083015261314681612c61565b9050919050565b6000602082019050818103600083015261316681612ca7565b9050919050565b6000602082019050818103600083015261318681612ced565b9050919050565b60006020820190506131a26000830184612d10565b92915050565b60006131b26131c3565b90506131be82826134b0565b919050565b6000604051905090565b600067ffffffffffffffff8211156131e8576131e76135e8565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613214576132136135e8565b5b61321d82613617565b9050602081019050919050565b600067ffffffffffffffff821115613245576132446135e8565b5b61324e82613617565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132be82613432565b91506132c983613432565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132fe576132fd61355b565b5b828201905092915050565b600061331482613432565b915061331f83613432565b92508261332f5761332e61358a565b5b828204905092915050565b600061334582613432565b915061335083613432565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133895761338861355b565b5b828202905092915050565b600061339f82613432565b91506133aa83613432565b9250828210156133bd576133bc61355b565b5b828203905092915050565b60006133d382613412565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561346957808201518184015260208101905061344e565b83811115613478576000848401525b50505050565b6000600282049050600182168061349657607f821691505b602082108114156134aa576134a96135b9565b5b50919050565b6134b982613617565b810181811067ffffffffffffffff821117156134d8576134d76135e8565b5b80604052505050565b60006134ec82613432565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351f5761351e61355b565b5b600182019050919050565b600061353582613432565b915061354083613432565b9250826135505761354f61358a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f746865206d6178696d756d206f6620457069634e46542068617320616c72656160008201527f6479206265656e206d696e746564000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613c3d816133c8565b8114613c4857600080fd5b50565b613c54816133da565b8114613c5f57600080fd5b50565b613c6b816133e6565b8114613c7657600080fd5b50565b613c8281613432565b8114613c8d57600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202c65331afebea0935dde49dd0a738578f92f5b58bb97745033e8dffedba28ba764736f6c634300080400333b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20323470783b207d3c2f7374796c653e3c726563742077696474683d273130302527206865696768743d2731303025272066696c6c3d27626c61636b27202f3e3c7465787420783d273530252720793d273530252720636c6173733d27626173652720646f6d696e616e742d626173656c696e653d276d6964646c652720746578742d616e63686f723d276d6964646c65273e3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f73766727207072657365727665417370656374526174696f3d27784d696e594d696e206d656574272076696577426f783d273020302033353020333530273e3c7374796c653e2e62617365207b2066696c6c3a", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb465146102b8578063b88d4fde146102d4578063c87b56dd146102f0578063e61e8b9b14610320578063e985e9c51461033e5761010b565b806370a082311461021c57806395d89b411461024c57806397017d901461026a5780639a99608b146102885761010b565b80631249c58b116100de5780631249c58b146101aa57806323b872dd146101b457806342842e0e146101d05780636352211e146101ec5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190612853565b61036e565b6040516101379190612ef2565b60405180910390f35b610148610450565b6040516101559190612f0d565b60405180910390f35b610178600480360381019061017391906128a5565b6104e2565b6040516101859190612e62565b60405180910390f35b6101a860048036038101906101a39190612798565b610567565b005b6101b261067f565b005b6101ce60048036038101906101c99190612692565b610d09565b005b6101ea60048036038101906101e59190612692565b610d69565b005b610206600480360381019061020191906128a5565b610d89565b6040516102139190612e62565b60405180910390f35b6102366004803603810190610231919061262d565b610e3b565b604051610243919061318d565b60405180910390f35b610254610ef3565b6040516102619190612f0d565b60405180910390f35b610272610f85565b60405161027f919061318d565b60405180910390f35b6102a2600480360381019061029d91906127d4565b610f8f565b6040516102af9190612f0d565b60405180910390f35b6102d260048036038101906102cd919061275c565b611021565b005b6102ee60048036038101906102e991906126e1565b611037565b005b61030a600480360381019061030591906128a5565b611099565b6040516103179190612f0d565b60405180910390f35b6103286111eb565b604051610335919061318d565b60405180910390f35b61035860048036038101906103539190612656565b6111fc565b6040516103659190612ef2565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610449575061044882611329565b5b9050919050565b60606000805461045f9061347e565b80601f016020809104026020016040519081016040528092919081815260200182805461048b9061347e565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b60006104ed82611393565b61052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610523906130ed565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061057282610d89565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105da9061314d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106026113ff565b73ffffffffffffffffffffffffffffffffffffffff16148061063157506106308161062b6113ff565b6111fc565b5b610670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106679061302d565b60405180910390fd5b61067a8383611407565b505050565b60085461068c60076114c0565b106106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c39061310d565b60405180910390fd5b60006106d860076114c0565b905060006107ed600b805480602002602001604051908101604052809291908181526020016000905b828210156107ad5783829060005260206000200180546107209061347e565b80601f016020809104026020016040519081016040528092919081815260200182805461074c9061347e565b80156107995780601f1061076e57610100808354040283529160200191610799565b820191906000526020600020905b81548152906001019060200180831161077c57829003601f168201915b505050505081526020019060010190610701565b505050506040518060400160405280600581526020017f636f6c6f7200000000000000000000000000000000000000000000000000000081525084610f8f565b90506000610902600c805480602002602001604051908101604052809291908181526020016000905b828210156108c25783829060005260206000200180546108359061347e565b80601f01602080910402602001604051908101604052809291908181526020018280546108619061347e565b80156108ae5780601f10610883576101008083540402835291602001916108ae565b820191906000526020600020905b81548152906001019060200180831161089157829003601f168201915b505050505081526020019060010190610816565b505050506040518060400160405280600581526020017f666972737400000000000000000000000000000000000000000000000000000081525085610f8f565b90506000610a17600d805480602002602001604051908101604052809291908181526020016000905b828210156109d757838290600052602060002001805461094a9061347e565b80601f01602080910402602001604051908101604052809291908181526020018280546109769061347e565b80156109c35780601f10610998576101008083540402835291602001916109c3565b820191906000526020600020905b8154815290600101906020018083116109a657829003601f168201915b50505050508152602001906001019061092b565b505050506040518060400160405280600681526020017f7365636f6e64000000000000000000000000000000000000000000000000000081525086610f8f565b90506000610b2c600e805480602002602001604051908101604052809291908181526020016000905b82821015610aec578382906000526020600020018054610a5f9061347e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8b9061347e565b8015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b505050505081526020019060010190610a40565b505050506040518060400160405280600581526020017f746869726400000000000000000000000000000000000000000000000000000081525087610f8f565b9050600084848484604051602001610b479493929190612d5a565b60405160208183030381529060405290506000600986600a878787604051602001610b7796959493929190612d98565b60405160208183030381529060405290506000610bbc83610b97846114ce565b604051602001610ba8929190612dfb565b6040516020818303038152906040526114ce565b9050600081604051602001610bd19190612e40565b6040516020818303038152906040529050610c206040518060400160405280601581526020017f0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0000000000000000000000815250611290565b610c2981611290565b610c676040518060400160405280601581526020017f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0000000000000000000000815250611290565b610c71338a61168c565b610c7b89826116aa565b610cbb6040518060400160405280601381526020017f4e4654202573206d696e74656420746f202573000000000000000000000000008152508a3361171e565b610cc560076117bd565b7febb98688741ffa4c7589bf325de30cf7becb63de567842e1ccdb6cb949fdc82c338a604051610cf6929190612ec9565b60405180910390a1505050505050505050565b610d1a610d146113ff565b826117d3565b610d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d509061316d565b60405180910390fd5b610d648383836118b1565b505050565b610d8483838360405180602001604052806000815250611037565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e299061306d565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea39061304d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610f029061347e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2e9061347e565b8015610f7b5780601f10610f5057610100808354040283529160200191610f7b565b820191906000526020600020905b815481529060010190602001808311610f5e57829003601f168201915b5050505050905090565b6000600854905090565b60606000610fc584610fa085611b18565b604051602001610fb1929190612d36565b604051602081830303815290604052611cc5565b9050845181610fd4919061352a565b905084818151811061100f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519150509392505050565b61103361102c6113ff565b8383611cf8565b5050565b6110486110426113ff565b836117d3565b611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e9061316d565b60405180910390fd5b61109384848484611e65565b50505050565b60606110a482611393565b6110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da906130cd565b60405180910390fd5b60006006600084815260200190815260200160002080546111039061347e565b80601f016020809104026020016040519081016040528092919081815260200182805461112f9061347e565b801561117c5780601f106111515761010080835404028352916020019161117c565b820191906000526020600020905b81548152906001019060200180831161115f57829003601f168201915b50505050509050600061118d611ec1565b90506000815114156111a35781925050506111e6565b6000825111156111d85780826040516020016111c0929190612d36565b604051602081830303815290604052925050506111e6565b6111e184611ed8565b925050505b919050565b60006111f760076114c0565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611326816040516024016112a49190612f0d565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f7f565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661147a83610d89565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b606060008251905060008114156114f75760405180602001604052806000815250915050611687565b6000600360028361150891906132b3565b6115129190613309565b600461151e919061333a565b9050600060208261152f91906132b3565b67ffffffffffffffff81111561156e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156115a05781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001613c91604091399050600181016020830160005b868110156116445760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b905080845260048401935050506115cb565b50600386066001811461165e576002811461166e57611679565b613d3d60f01b6002830352611679565b603d60f81b60018303525b508484525050819450505050505b919050565b6116a6828260405180602001604052806000815250611fa8565b5050565b6116b382611393565b6116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e99061308d565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906117199291906123a1565b505050565b6117b883838360405160240161173693929190612f2f565b6040516020818303038152906040527fe3849f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f7f565b505050565b6001816000016000828254019250508190555050565b60006117de82611393565b61181d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118149061300d565b60405180910390fd5b600061182883610d89565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061189757508373ffffffffffffffffffffffffffffffffffffffff1661187f846104e2565b73ffffffffffffffffffffffffffffffffffffffff16145b806118a857506118a781856111fc565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166118d182610d89565b73ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e90612f8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e90612fcd565b60405180910390fd5b6119a2838383612003565b6119ad600082611407565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119fd9190613394565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a5491906132b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b13838383612008565b505050565b60606000821415611b60576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611cc0565b600082905060005b60008214611b92578080611b7b906134e1565b915050600a82611b8b9190613309565b9150611b68565b60008167ffffffffffffffff811115611bd4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611c065781602001600182028036833780820191505090505b5090505b60008514611cb957600182611c1f9190613394565b9150600a85611c2e919061352a565b6030611c3a91906132b3565b60f81b818381518110611c76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611cb29190613309565b9450611c0a565b8093505050505b919050565b600081604051602001611cd89190612d1f565b6040516020818303038152906040528051906020012060001c9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5e90612fed565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e589190612ef2565b60405180910390a3505050565b611e708484846118b1565b611e7c8484848461200d565b611ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb290612f6d565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b6060611ee382611393565b611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f199061312d565b60405180910390fd5b6000611f2c611ec1565b90506000815111611f4c5760405180602001604052806000815250611f77565b80611f5684611b18565b604051602001611f67929190612d36565b6040516020818303038152906040525b915050919050565b60008151905060006a636f6e736f6c652e6c6f679050602083016000808483855afa5050505050565b611fb283836121a4565b611fbf600084848461200d565b611ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff590612f6d565b60405180910390fd5b505050565b505050565b505050565b600061202e8473ffffffffffffffffffffffffffffffffffffffff1661237e565b15612197578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026120576113ff565b8786866040518563ffffffff1660e01b81526004016120799493929190612e7d565b602060405180830381600087803b15801561209357600080fd5b505af19250505080156120c457506040513d601f19601f820116820180604052508101906120c1919061287c565b60015b612147573d80600081146120f4576040519150601f19603f3d011682016040523d82523d6000602084013e6120f9565b606091505b5060008151141561213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690612f6d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061219c565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b906130ad565b60405180910390fd5b61221d81611393565b1561225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490612fad565b60405180910390fd5b61226960008383612003565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122b991906132b3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461237a60008383612008565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546123ad9061347e565b90600052602060002090601f0160209004810192826123cf5760008555612416565b82601f106123e857805160ff1916838001178555612416565b82800160010185558215612416579182015b828111156124155782518255916020019190600101906123fa565b5b5090506124239190612427565b5090565b5b80821115612440576000816000905550600101612428565b5090565b6000612457612452846131cd565b6131a8565b9050808382526020820190508285602086028201111561247657600080fd5b60005b858110156124c057813567ffffffffffffffff81111561249857600080fd5b8086016124a589826125ee565b85526020850194506020840193505050600181019050612479565b5050509392505050565b60006124dd6124d8846131f9565b6131a8565b9050828152602081018484840111156124f557600080fd5b61250084828561343c565b509392505050565b600061251b6125168461322a565b6131a8565b90508281526020810184848401111561253357600080fd5b61253e84828561343c565b509392505050565b60008135905061255581613c34565b92915050565b600082601f83011261256c57600080fd5b813561257c848260208601612444565b91505092915050565b60008135905061259481613c4b565b92915050565b6000813590506125a981613c62565b92915050565b6000815190506125be81613c62565b92915050565b600082601f8301126125d557600080fd5b81356125e58482602086016124ca565b91505092915050565b600082601f8301126125ff57600080fd5b813561260f848260208601612508565b91505092915050565b60008135905061262781613c79565b92915050565b60006020828403121561263f57600080fd5b600061264d84828501612546565b91505092915050565b6000806040838503121561266957600080fd5b600061267785828601612546565b925050602061268885828601612546565b9150509250929050565b6000806000606084860312156126a757600080fd5b60006126b586828701612546565b93505060206126c686828701612546565b92505060406126d786828701612618565b9150509250925092565b600080600080608085870312156126f757600080fd5b600061270587828801612546565b945050602061271687828801612546565b935050604061272787828801612618565b925050606085013567ffffffffffffffff81111561274457600080fd5b612750878288016125c4565b91505092959194509250565b6000806040838503121561276f57600080fd5b600061277d85828601612546565b925050602061278e85828601612585565b9150509250929050565b600080604083850312156127ab57600080fd5b60006127b985828601612546565b92505060206127ca85828601612618565b9150509250929050565b6000806000606084860312156127e957600080fd5b600084013567ffffffffffffffff81111561280357600080fd5b61280f8682870161255b565b935050602084013567ffffffffffffffff81111561282c57600080fd5b612838868287016125ee565b925050604061284986828701612618565b9150509250925092565b60006020828403121561286557600080fd5b60006128738482850161259a565b91505092915050565b60006020828403121561288e57600080fd5b600061289c848285016125af565b91505092915050565b6000602082840312156128b757600080fd5b60006128c584828501612618565b91505092915050565b6128d7816133c8565b82525050565b6128e6816133da565b82525050565b60006128f782613270565b6129018185613286565b935061291181856020860161344b565b61291a81613617565b840191505092915050565b60006129308261327b565b61293a8185613297565b935061294a81856020860161344b565b61295381613617565b840191505092915050565b60006129698261327b565b61297381856132a8565b935061298381856020860161344b565b80840191505092915050565b6000815461299c8161347e565b6129a681866132a8565b945060018216600081146129c157600181146129d257612a05565b60ff19831686528186019350612a05565b6129db8561325b565b60005b838110156129fd578154818901526001820191506020810190506129de565b838801955050505b50505092915050565b6000612a1b603283613297565b9150612a2682613628565b604082019050919050565b6000612a3e602583613297565b9150612a4982613677565b604082019050919050565b6000612a61601c83613297565b9150612a6c826136c6565b602082019050919050565b6000612a84602483613297565b9150612a8f826136ef565b604082019050919050565b6000612aa7601983613297565b9150612ab28261373e565b602082019050919050565b6000612aca6063836132a8565b9150612ad582613767565b606382019050919050565b6000612aed602c83613297565b9150612af882613802565b604082019050919050565b6000612b10600d836132a8565b9150612b1b82613851565b600d82019050919050565b6000612b33603883613297565b9150612b3e8261387a565b604082019050919050565b6000612b56602a83613297565b9150612b61826138c9565b604082019050919050565b6000612b79602983613297565b9150612b8482613918565b604082019050919050565b6000612b9c602e83613297565b9150612ba782613967565b604082019050919050565b6000612bbf6002836132a8565b9150612bca826139b6565b600282019050919050565b6000612be2602083613297565b9150612bed826139df565b602082019050919050565b6000612c05603183613297565b9150612c1082613a08565b604082019050919050565b6000612c28602c83613297565b9150612c3382613a57565b604082019050919050565b6000612c4b602e83613297565b9150612c5682613aa6565b604082019050919050565b6000612c6e602f83613297565b9150612c7982613af5565b604082019050919050565b6000612c91600a836132a8565b9150612c9c82613b44565b600a82019050919050565b6000612cb4602183613297565b9150612cbf82613b6d565b604082019050919050565b6000612cd7601d836132a8565b9150612ce282613bbc565b601d82019050919050565b6000612cfa603183613297565b9150612d0582613be5565b604082019050919050565b612d1981613432565b82525050565b6000612d2b828461295e565b915081905092915050565b6000612d42828561295e565b9150612d4e828461295e565b91508190509392505050565b6000612d66828761295e565b9150612d72828661295e565b9150612d7e828561295e565b9150612d8a828461295e565b915081905095945050505050565b6000612da4828961298f565b9150612db0828861295e565b9150612dbc828761298f565b9150612dc8828661295e565b9150612dd4828561295e565b9150612de0828461295e565b9150612deb82612b03565b9150819050979650505050505050565b6000612e0682612c84565b9150612e12828561295e565b9150612e1d82612abd565b9150612e29828461295e565b9150612e3482612bb2565b91508190509392505050565b6000612e4b82612cca565b9150612e57828461295e565b915081905092915050565b6000602082019050612e7760008301846128ce565b92915050565b6000608082019050612e9260008301876128ce565b612e9f60208301866128ce565b612eac6040830185612d10565b8181036060830152612ebe81846128ec565b905095945050505050565b6000604082019050612ede60008301856128ce565b612eeb6020830184612d10565b9392505050565b6000602082019050612f0760008301846128dd565b92915050565b60006020820190508181036000830152612f278184612925565b905092915050565b60006060820190508181036000830152612f498186612925565b9050612f586020830185612d10565b612f6560408301846128ce565b949350505050565b60006020820190508181036000830152612f8681612a0e565b9050919050565b60006020820190508181036000830152612fa681612a31565b9050919050565b60006020820190508181036000830152612fc681612a54565b9050919050565b60006020820190508181036000830152612fe681612a77565b9050919050565b6000602082019050818103600083015261300681612a9a565b9050919050565b6000602082019050818103600083015261302681612ae0565b9050919050565b6000602082019050818103600083015261304681612b26565b9050919050565b6000602082019050818103600083015261306681612b49565b9050919050565b6000602082019050818103600083015261308681612b6c565b9050919050565b600060208201905081810360008301526130a681612b8f565b9050919050565b600060208201905081810360008301526130c681612bd5565b9050919050565b600060208201905081810360008301526130e681612bf8565b9050919050565b6000602082019050818103600083015261310681612c1b565b9050919050565b6000602082019050818103600083015261312681612c3e565b9050919050565b6000602082019050818103600083015261314681612c61565b9050919050565b6000602082019050818103600083015261316681612ca7565b9050919050565b6000602082019050818103600083015261318681612ced565b9050919050565b60006020820190506131a26000830184612d10565b92915050565b60006131b26131c3565b90506131be82826134b0565b919050565b6000604051905090565b600067ffffffffffffffff8211156131e8576131e76135e8565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613214576132136135e8565b5b61321d82613617565b9050602081019050919050565b600067ffffffffffffffff821115613245576132446135e8565b5b61324e82613617565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132be82613432565b91506132c983613432565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132fe576132fd61355b565b5b828201905092915050565b600061331482613432565b915061331f83613432565b92508261332f5761332e61358a565b5b828204905092915050565b600061334582613432565b915061335083613432565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133895761338861355b565b5b828202905092915050565b600061339f82613432565b91506133aa83613432565b9250828210156133bd576133bc61355b565b5b828203905092915050565b60006133d382613412565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561346957808201518184015260208101905061344e565b83811115613478576000848401525b50505050565b6000600282049050600182168061349657607f821691505b602082108114156134aa576134a96135b9565b5b50919050565b6134b982613617565b810181811067ffffffffffffffff821117156134d8576134d76135e8565b5b80604052505050565b60006134ec82613432565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561351f5761351e61355b565b5b600182019050919050565b600061353582613432565b915061354083613432565b9250826135505761354f61358a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f222c20226465736372697074696f6e223a20224120686967686c79206163636c60008201527f61696d656420636f6c6c656374696f6e206f6620737175617265732e222c202260208201527f696d616765223a2022646174613a696d6167652f7376672b786d6c3b6261736560408201527f36342c0000000000000000000000000000000000000000000000000000000000606082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f3c2f746578743e3c2f7376673e00000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f746865206d6178696d756d206f6620457069634e46542068617320616c72656160008201527f6479206265656e206d696e746564000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f7b226e616d65223a202200000000000000000000000000000000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b613c3d816133c8565b8114613c4857600080fd5b50565b613c54816133da565b8114613c5f57600080fd5b50565b613c6b816133e6565b8114613c7657600080fd5b50565b613c8281613432565b8114613c8d57600080fd5b5056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202c65331afebea0935dde49dd0a738578f92f5b58bb97745033e8dffedba28ba764736f6c63430008040033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/EpicNFT.sol b/contracts/EpicNFT.sol index 9248f3e..395409f 100644 --- a/contracts/EpicNFT.sol +++ b/contracts/EpicNFT.sol @@ -11,6 +11,7 @@ contract EpicNFT is ERC721URIStorage { Counters.Counter private _tokenIds; event NewEpicNFTMinted(address sender, uint256 tokenID); + uint256 private maxTokenAllowed = 50; constructor() ERC721("SquareNFT", "SQUARE") { console.log("My first NFT contract! EPIC!!!"); @@ -76,7 +77,19 @@ contract EpicNFT is ERC721URIStorage { "Sailor" ]; + function nftMintedCount() public view returns (uint256) { + return _tokenIds.current(); + } + + function getMaxNFTAllowed() public view returns (uint256) { + return maxTokenAllowed; + } + function mint() public { + require( + _tokenIds.current() < maxTokenAllowed, + "the maximum of EpicNFT has already been minted" + ); uint256 tokenID = _tokenIds.current(); string memory color = pickRandomWord(colors, "color", tokenID); diff --git a/scripts/run.js b/scripts/run.js index 18b4e56..8e0ba93 100644 --- a/scripts/run.js +++ b/scripts/run.js @@ -6,11 +6,20 @@ async function main() { await contract.deployed(); console.log("EpicNFT deployed to:", contract.address); + let count = await contract.nftMintedCount(); + console.log(count.toNumber()); + let txn = await contract.mint(); await txn.wait(); + count = await contract.nftMintedCount(); + console.log(count.toNumber()); + txn = await contract.mint(); await txn.wait(); + + count = await contract.nftMintedCount(); + console.log(count.toNumber()); } // run the script