[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "crewId", "type": "uint256" } ], "name": "CrewFilled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "crewId", "type": "uint256" } ], "name": "CrewJoin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": true, "internalType": "enum CommunityMemory.MintStatus", "name": "mintStatus", "type": "uint8" } ], "name": "HolderMintStatus", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "nominator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "nominee", "type": "address" } ], "name": "Nomination", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "MAX_CREW_SIZE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_OG_READER_COUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_READER_COUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "crewTracking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "crewId", "type": "uint256" } ], "name": "joinCrew", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "readerTokenAmount", "type": "uint256" } ], "name": "mintOwnerTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintReader", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "mintTracking", "outputs": [ { "internalType": "enum CommunityMemory.MintStatus", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[3]", "name": "readers", "type": "address[3]" } ], "name": "nominateReaders", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nomineeCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nominees", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_id", "type": "uint256" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_contractURIHash", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newUri", "type": "string" } ], "name": "setMetadataUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_paused", "type": "bool" } ], "name": "setPaused", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040525f600a555f600b55604051806060016040528060358152602001620054aa60359139600c908162000036919062000499565b506001600d5f6101000a81548160ff0219169083151502179055506040518060400160405280601081526020017f436f6d6d756e697479204d656d6f727900000000000000000000000000000000815250600e908162000097919062000499565b50348015620000a4575f80fd5b5033604051806060016040528060368152602001620054df60369139620000d1816200015d60201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000145575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200013c9190620005c0565b60405180910390fd5b62000156816200017260201b60201c565b50620005db565b80600290816200016e919062000499565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620002b157607f821691505b602082108103620002c757620002c66200026c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200032b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ee565b620003378683620002ee565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003816200037b62000375846200034f565b62000358565b6200034f565b9050919050565b5f819050919050565b6200039c8362000361565b620003b4620003ab8262000388565b848454620002fa565b825550505050565b5f90565b620003ca620003bc565b620003d781848462000391565b505050565b5b81811015620003fe57620003f25f82620003c0565b600181019050620003dd565b5050565b601f8211156200044d576200041781620002cd565b6200042284620002df565b8101602085101562000432578190505b6200044a6200044185620002df565b830182620003dc565b50505b505050565b5f82821c905092915050565b5f6200046f5f198460080262000452565b1980831691505092915050565b5f6200048983836200045e565b9150826002028217905092915050565b620004a48262000235565b67ffffffffffffffff811115620004c057620004bf6200023f565b5b620004cc825462000299565b620004d982828562000402565b5f60209050601f8311600181146200050f575f8415620004fa578287015190505b6200050685826200047c565b86555062000575565b601f1984166200051f86620002cd565b5f5b82811015620005485784890151825560018201915060208501945060208101905062000521565b8683101562000568578489015162000564601f8916826200045e565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620005a8826200057d565b9050919050565b620005ba816200059c565b82525050565b5f602082019050620005d55f830184620005af565b92915050565b614ec180620005e95f395ff3fe608060405234801561000f575f80fd5b50600436106101d7575f3560e01c80638da5cb5b11610102578063defcda0f116100a0578063f242432a1161006f578063f242432a14610563578063f2b0498f1461057f578063f2dcda5c146105af578063f2fde38b146105cd576101d7565b8063defcda0f146104b5578063e5050777146104e5578063e8a3d48514610515578063e985e9c514610533576101d7565b8063a4b76e1f116100dc578063a4b76e1f1461041b578063b48b70ca14610439578063bd85b03914610469578063c6f9118114610499576101d7565b80638da5cb5b146103c5578063938e3d7b146103e3578063a22cb465146103ff576101d7565b806318160ddd1161017a57806349606c841161014957806349606c841461033f5780634e1273f41461035b5780634f558e791461038b578063715018a6146103bb576101d7565b806318160ddd146102df5780632eb2c2d6146102fd5780634041cd4d146103195780634935195d14610335576101d7565b806306fdde03116101b657806306fdde03146102595780630e89341c146102775780631130630c146102a757806316c38b3c146102c3576101d7565b8062fdd58e146101db57806301ffc9a71461020b57806304ad2d871461023b575b5f80fd5b6101f560048036038101906101f09190613650565b6105e9565b604051610202919061369d565b60405180910390f35b6102256004803603810190610220919061370b565b61063e565b6040516102329190613750565b60405180910390f35b61024361071f565b604051610250919061369d565b60405180910390f35b610261610724565b60405161026e91906137f3565b60405180910390f35b610291600480360381019061028c9190613813565b6107b0565b60405161029e91906137f3565b60405180910390f35b6102c160048036038101906102bc919061389f565b6107f0565b005b6102dd60048036038101906102d89190613914565b610848565b005b6102e761086c565b6040516102f4919061369d565b60405180910390f35b61031760048036038101906103129190613b27565b610875565b005b610333600480360381019061032e9190613813565b61091c565b005b61033d610be3565b005b61035960048036038101906103549190613c13565b610ee2565b005b61037560048036038101906103709190613cfe565b6112e3565b6040516103829190613e2b565b60405180910390f35b6103a560048036038101906103a09190613813565b6113ea565b6040516103b29190613750565b60405180910390f35b6103c36113fd565b005b6103cd611410565b6040516103da9190613e5a565b60405180910390f35b6103fd60048036038101906103f8919061389f565b611438565b005b61041960048036038101906104149190613e73565b61148f565b005b6104236114a5565b604051610430919061369d565b60405180910390f35b610453600480360381019061044e9190613650565b6114aa565b6040516104609190613e5a565b60405180910390f35b610483600480360381019061047e9190613813565b6114e7565b604051610490919061369d565b60405180910390f35b6104b360048036038101906104ae9190613813565b611501565b005b6104cf60048036038101906104ca9190613eb1565b611923565b6040516104dc9190613f4f565b60405180910390f35b6104ff60048036038101906104fa9190613eb1565b611940565b60405161050c919061369d565b60405180910390f35b61051d611955565b60405161052a91906137f3565b60405180910390f35b61054d60048036038101906105489190613f68565b6119e5565b60405161055a9190613750565b60405180910390f35b61057d60048036038101906105789190613fa6565b611a73565b005b61059960048036038101906105949190613eb1565b6120c9565b6040516105a6919061369d565b60405180910390f35b6105b76120de565b6040516105c4919061369d565b60405180910390f35b6105e760048036038101906105e29190613eb1565b6120e3565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061070857507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610718575061071782612167565b5b9050919050565b600881565b600e805461073190614066565b80601f016020809104026020016040519081016040528092919081815260200182805461075d90614066565b80156107a85780601f1061077f576101008083540402835291602001916107a8565b820191905f5260205f20905b81548152906001019060200180831161078b57829003601f168201915b505050505081565b60605f6107bc836121d0565b9050806107c884612262565b6040516020016107d99291906140d0565b604051602081830303815290604052915050919050565b6107f861232c565b61084482828080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506123b3565b5050565b61085061232c565b80600d5f6101000a81548160ff02191690831515021790555050565b5f600454905090565b5f61087e6123c6565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156108c357506108c186826119e5565b155b156109075780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016108fe9291906140f3565b60405180910390fd5b61091486868686866123cd565b505050505050565b61092461232c565b5f610937610930611410565b60016105e9565b14610977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e90614164565b60405180910390fd5b5f600290505b6008811015610a4657803373ffffffffffffffffffffffffffffffffffffffff167ffd71a1ff9a9f64c9d5ae6eabb827f4cf2f1fbf83da684592f87cbdaf0bb9defc60405160405180910390a3600b5f8154600101919050819055506109fb6109e4611410565b82600160405180602001604052805f8152506124c1565b6002610a06826114e7565b03610a3957807f53d4b21103e83b1822f5eff2caed5bed34032e16fcf1eb28064620f4e6f3656e60405160405180910390a25b808060010191505061097d565b50600360065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690836003811115610aa757610aa6613edc565b5b0217905550600380811115610abf57610abe613edc565b5b3373ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a3610b24610b0d611410565b60018360405180602001604052805f8152506124c1565b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690836003811115610b8457610b83613edc565b5b021790555060016003811115610b9d57610b9c613edc565b5b3373ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a350565b600d5f9054906101000a900460ff1615610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c29906141cc565b60405180910390fd5b5f610c3e3360016105e9565b14610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7590614234565b60405180910390fd5b6008610c8a60016114e7565b10610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc19061429c565b60405180910390fd5b6004600a5410610d855760026003811115610ce857610ce7613edc565b5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166003811115610d4457610d43613edc565b5b14610d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7b9061432a565b60405180910390fd5b5b5f6003811115610d9857610d97613edc565b5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166003811115610df457610df3613edc565b5b03610e0957600a5f8154600101919050819055505b600160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690836003811115610e6957610e68613edc565b5b021790555060016003811115610e8257610e81613edc565b5b3373ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a3610ee03360018060405180602001604052805f8152506124c1565b565b600d5f9054906101000a900460ff1615610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f28906141cc565b60405180910390fd5b60016003811115610f4557610f44613edc565b5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166003811115610fa157610fa0613edc565b5b14806110195750600380811115610fbb57610fba613edc565b5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600381111561101757611016613edc565b5b145b611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f906143b8565b60405180910390fd5b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600381106110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390614446565b60405180910390fd5b5f5b600381101561129c575f73ffffffffffffffffffffffffffffffffffffffff1683826003811061111157611110614464565b5b6020020160208101906111249190613eb1565b73ffffffffffffffffffffffffffffffffffffffff16031561128f575f600381111561115357611152613edc565b5b60065f85846003811061116957611168614464565b5b60200201602081019061117c9190613eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660038111156111d4576111d3613edc565b5b14611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120b9061454d565b60405180910390fd5b816001019150600382111561125e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125590614446565b60405180910390fd5b61128e338285846003811061127657611275614464565b5b6020020160208101906112899190613eb1565b612556565b5b80806001019150506110de565b508060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b6060815183511461132f57815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161132692919061456b565b60405180910390fd5b5f835167ffffffffffffffff81111561134b5761134a61393f565b5b6040519080825280602002602001820160405280156113795781602001602082028036833780820191505090505b5090505f5b84518110156113df576113b561139d82876126fb90919063ffffffff16565b6113b0838761270e90919063ffffffff16565b6105e9565b8282815181106113c8576113c7614464565b5b60200260200101818152505080600101905061137e565b508091505092915050565b5f806113f5836114e7565b119050919050565b61140561232c565b61140e5f612721565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144061232c565b8181600c9182611451929190614739565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac373788282604051611483929190614832565b60405180910390a15050565b6114a161149a6123c6565b83836127e4565b5050565b600481565b6009602052815f5260405f20602052805f5260405f205f915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f8381526020019081526020015f20549050919050565b600d5f9054906101000a900460ff1615611550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611547906141cc565b60405180910390fd5b60028110158015611562575060078111155b6115a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115989061489e565b60405180910390fd5b6003808111156115b4576115b3613edc565b5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660038111156116105761160f613edc565b5b03611650576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116479061492c565b60405180910390fd5b6001600381111561166457611663613edc565b5b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660038111156116c0576116bf613edc565b5b14611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f7906149ba565b60405180910390fd5b5f61171261170c611410565b836105e9565b61171b836114e7565b6117259190614a05565b9050600160026117359190614a05565b8110611776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176d90614a82565b60405180910390fd5b600360065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360038111156117d6576117d5613edc565b5b02179055506003808111156117ee576117ed613edc565b5b3373ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a38160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550813373ffffffffffffffffffffffffffffffffffffffff167ffd71a1ff9a9f64c9d5ae6eabb827f4cf2f1fbf83da684592f87cbdaf0bb9defc60405160405180910390a3600b5f8154600101919050819055506118e13383600160405180602001604052805f8152506124c1565b60026118ec836114e7565b0361191f57817f53d4b21103e83b1822f5eff2caed5bed34032e16fcf1eb28064620f4e6f3656e60405160405180910390a25b5050565b6006602052805f5260405f205f915054906101000a900460ff1681565b6008602052805f5260405f205f915090505481565b6060600c805461196490614066565b80601f016020809104026020016040519081016040528092919081815260200182805461199090614066565b80156119db5780601f106119b2576101008083540402835291602001916119db565b820191905f5260205f20905b8154815290600101906020018083116119be57829003601f168201915b5050505050905090565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611a7b611410565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611b005760066002611abb9190614aa0565b600b541015611aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af690614b77565b60405180910390fd5b5b611b0d858585858561294d565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690836003811115611bb557611bb4613edc565b5b021790555060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166003811115611c1657611c15613edc565b5b8473ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a3611c61611410565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146120c257600160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611dda5760075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548473ffffffffffffffffffffffffffffffffffffffff167ffd71a1ff9a9f64c9d5ae6eabb827f4cf2f1fbf83da684592f87cbdaf0bb9defc60405160405180910390a35b5f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690836003811115611e3957611e38613edc565b5b02179055505f6003811115611e5157611e50613edc565b5b8573ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a360085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f5b818110156120bf575f60095f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060095f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f41ab238d8086c9757f18d383b4e864a7cd52d584a4d7bbeaa3c669cfec288d3d60405160405180910390a3508080600101915050611f56565b50505b5050505050565b6007602052805f5260405f205f915090505481565b600281565b6120eb61232c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361215b575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121529190613e5a565b60405180910390fd5b61216481612721565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600280546121df90614066565b80601f016020809104026020016040519081016040528092919081815260200182805461220b90614066565b80156122565780601f1061222d57610100808354040283529160200191612256565b820191905f5260205f20905b81548152906001019060200180831161223957829003601f168201915b50505050509050919050565b60605f6001612270846129f4565b0190505f8167ffffffffffffffff81111561228e5761228d61393f565b5b6040519080825280601f01601f1916602001820160405280156122c05781602001600182028036833780820191505090505b5090505f82602001820190505b600115612321578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161231657612315614b95565b5b0494505f85036122cd575b819350505050919050565b6123346123c6565b73ffffffffffffffffffffffffffffffffffffffff16612352611410565b73ffffffffffffffffffffffffffffffffffffffff16146123b1576123756123c6565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016123a89190613e5a565b60405180910390fd5b565b80600290816123c29190614bc2565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361243d575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016124349190613e5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124ad575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016124a49190613e5a565b60405180910390fd5b6124ba8585858585612b45565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612531575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016125289190613e5a565b60405180910390fd5b5f8061253d8585612bf1565b9150915061254e5f87848487612b45565b505050505050565b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908360038111156126405761263f613edc565b5b02179055506002600381111561265957612658613edc565b5b8173ffffffffffffffffffffffffffffffffffffffff167f91cc0b28b399b7784ad6347634f7c2fb7a5409e53a64263bde60759c4c106e2960405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f41ab238d8086c9757f18d383b4e864a7cd52d584a4d7bbeaa3c669cfec288d3d60405160405180910390a3505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612854575f6040517fced3e10000000000000000000000000000000000000000000000000000000000815260040161284b9190613e5a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516129409190613750565b60405180910390a3505050565b5f6129566123c6565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561299b575061299986826119e5565b155b156129df5780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016129d69291906140f3565b60405180910390fd5b6129ec8686868686612c21565b505050505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612a50577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612a4657612a45614b95565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612a8d576d04ee2d6d415b85acef81000000008381612a8357612a82614b95565b5b0492506020810190505b662386f26fc100008310612abc57662386f26fc100008381612ab257612ab1614b95565b5b0492506010810190505b6305f5e1008310612ae5576305f5e1008381612adb57612ada614b95565b5b0492506008810190505b6127108310612b0a576127108381612b0057612aff614b95565b5b0492506004810190505b60648310612b2d5760648381612b2357612b22614b95565b5b0492506002810190505b600a8310612b3c576001810190505b80915050919050565b612b5185858585612d27565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612bea575f612b8d6123c6565b90506001845103612bd9575f612bac5f8661270e90919063ffffffff16565b90505f612bc25f8661270e90919063ffffffff16565b9050612bd2838989858589612ec4565b5050612be8565b612be7818787878787613073565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612c91575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401612c889190613e5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612d01575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401612cf89190613e5a565b60405180910390fd5b5f80612d0d8585612bf1565b91509150612d1e8787848487612b45565b50505050505050565b612d3384848484613222565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612e06575f805b8351811015612deb575f838281518110612d8657612d85614464565b5b602002602001015190508060035f878581518110612da757612da6614464565b5b602002602001015181526020019081526020015f205f828254612dca9190614c91565b925050819055508083612ddd9190614c91565b925050806001019050612d69565b508060045f828254612dfd9190614c91565b92505081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ebe575f805b8351811015612eac575f838281518110612e5957612e58614464565b5b602002602001015190508060035f878581518110612e7a57612e79614464565b5b602002602001015181526020019081526020015f205f8282540392505081905550808301925050806001019050612e3c565b508060045f8282540392505081905550505b50505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561306b578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612f24959493929190614d16565b6020604051808303815f875af1925050508015612f5f57506040513d601f19601f82011682018060405250810190612f5c9190614d82565b60015b612fe0573d805f8114612f8d576040519150601f19603f3d011682016040523d82523d5f602084013e612f92565b606091505b505f815103612fd857846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401612fcf9190613e5a565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461306957846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016130609190613e5a565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561321a578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016130d3959493929190614dad565b6020604051808303815f875af192505050801561310e57506040513d601f19601f8201168201806040525081019061310b9190614d82565b60015b61318f573d805f811461313c576040519150601f19603f3d011682016040523d82523d5f602084013e613141565b606091505b505f81510361318757846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161317e9190613e5a565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461321857846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161320f9190613e5a565b60405180910390fd5b505b505050505050565b805182511461326c57815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161326392919061456b565b60405180910390fd5b5f6132756123c6565b90505f5b8351811015613471575f613296828661270e90919063ffffffff16565b90505f6132ac838661270e90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146133cf575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561337b57888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016133729493929190614e13565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461346457805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461345c9190614c91565b925050819055505b5050806001019050613279565b50600183510361352c575f61348f5f8561270e90919063ffffffff16565b90505f6134a55f8561270e90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161351d92919061456b565b60405180910390a450506135ab565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516135a2929190614e56565b60405180910390a45b5050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135ec826135c3565b9050919050565b6135fc816135e2565b8114613606575f80fd5b50565b5f81359050613617816135f3565b92915050565b5f819050919050565b61362f8161361d565b8114613639575f80fd5b50565b5f8135905061364a81613626565b92915050565b5f8060408385031215613666576136656135bb565b5b5f61367385828601613609565b92505060206136848582860161363c565b9150509250929050565b6136978161361d565b82525050565b5f6020820190506136b05f83018461368e565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6136ea816136b6565b81146136f4575f80fd5b50565b5f81359050613705816136e1565b92915050565b5f602082840312156137205761371f6135bb565b5b5f61372d848285016136f7565b91505092915050565b5f8115159050919050565b61374a81613736565b82525050565b5f6020820190506137635f830184613741565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137a0578082015181840152602081019050613785565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6137c582613769565b6137cf8185613773565b93506137df818560208601613783565b6137e8816137ab565b840191505092915050565b5f6020820190508181035f83015261380b81846137bb565b905092915050565b5f60208284031215613828576138276135bb565b5b5f6138358482850161363c565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261385f5761385e61383e565b5b8235905067ffffffffffffffff81111561387c5761387b613842565b5b60208301915083600182028301111561389857613897613846565b5b9250929050565b5f80602083850312156138b5576138b46135bb565b5b5f83013567ffffffffffffffff8111156138d2576138d16135bf565b5b6138de8582860161384a565b92509250509250929050565b6138f381613736565b81146138fd575f80fd5b50565b5f8135905061390e816138ea565b92915050565b5f60208284031215613929576139286135bb565b5b5f61393684828501613900565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613975826137ab565b810181811067ffffffffffffffff821117156139945761399361393f565b5b80604052505050565b5f6139a66135b2565b90506139b2828261396c565b919050565b5f67ffffffffffffffff8211156139d1576139d061393f565b5b602082029050602081019050919050565b5f6139f46139ef846139b7565b61399d565b90508083825260208201905060208402830185811115613a1757613a16613846565b5b835b81811015613a405780613a2c888261363c565b845260208401935050602081019050613a19565b5050509392505050565b5f82601f830112613a5e57613a5d61383e565b5b8135613a6e8482602086016139e2565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115613a9557613a9461393f565b5b613a9e826137ab565b9050602081019050919050565b828183375f83830152505050565b5f613acb613ac684613a7b565b61399d565b905082815260208101848484011115613ae757613ae6613a77565b5b613af2848285613aab565b509392505050565b5f82601f830112613b0e57613b0d61383e565b5b8135613b1e848260208601613ab9565b91505092915050565b5f805f805f60a08688031215613b4057613b3f6135bb565b5b5f613b4d88828901613609565b9550506020613b5e88828901613609565b945050604086013567ffffffffffffffff811115613b7f57613b7e6135bf565b5b613b8b88828901613a4a565b935050606086013567ffffffffffffffff811115613bac57613bab6135bf565b5b613bb888828901613a4a565b925050608086013567ffffffffffffffff811115613bd957613bd86135bf565b5b613be588828901613afa565b9150509295509295909350565b5f81905082602060030282011115613c0d57613c0c613846565b5b92915050565b5f60608284031215613c2857613c276135bb565b5b5f613c3584828501613bf2565b91505092915050565b5f67ffffffffffffffff821115613c5857613c5761393f565b5b602082029050602081019050919050565b5f613c7b613c7684613c3e565b61399d565b90508083825260208201905060208402830185811115613c9e57613c9d613846565b5b835b81811015613cc75780613cb38882613609565b845260208401935050602081019050613ca0565b5050509392505050565b5f82601f830112613ce557613ce461383e565b5b8135613cf5848260208601613c69565b91505092915050565b5f8060408385031215613d1457613d136135bb565b5b5f83013567ffffffffffffffff811115613d3157613d306135bf565b5b613d3d85828601613cd1565b925050602083013567ffffffffffffffff811115613d5e57613d5d6135bf565b5b613d6a85828601613a4a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613da68161361d565b82525050565b5f613db78383613d9d565b60208301905092915050565b5f602082019050919050565b5f613dd982613d74565b613de38185613d7e565b9350613dee83613d8e565b805f5b83811015613e1e578151613e058882613dac565b9750613e1083613dc3565b925050600181019050613df1565b5085935050505092915050565b5f6020820190508181035f830152613e438184613dcf565b905092915050565b613e54816135e2565b82525050565b5f602082019050613e6d5f830184613e4b565b92915050565b5f8060408385031215613e8957613e886135bb565b5b5f613e9685828601613609565b9250506020613ea785828601613900565b9150509250929050565b5f60208284031215613ec657613ec56135bb565b5b5f613ed384828501613609565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60048110613f1a57613f19613edc565b5b50565b5f819050613f2a82613f09565b919050565b5f613f3982613f1d565b9050919050565b613f4981613f2f565b82525050565b5f602082019050613f625f830184613f40565b92915050565b5f8060408385031215613f7e57613f7d6135bb565b5b5f613f8b85828601613609565b9250506020613f9c85828601613609565b9150509250929050565b5f805f805f60a08688031215613fbf57613fbe6135bb565b5b5f613fcc88828901613609565b9550506020613fdd88828901613609565b9450506040613fee8882890161363c565b9350506060613fff8882890161363c565b925050608086013567ffffffffffffffff8111156140205761401f6135bf565b5b61402c88828901613afa565b9150509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061407d57607f821691505b6020821081036140905761408f614039565b5b50919050565b5f81905092915050565b5f6140aa82613769565b6140b48185614096565b93506140c4818560208601613783565b80840191505092915050565b5f6140db82856140a0565b91506140e782846140a0565b91508190509392505050565b5f6040820190506141065f830185613e4b565b6141136020830184613e4b565b9392505050565b7f4f776e657220616c7265616479206d696e7465642e00000000000000000000005f82015250565b5f61414e601583613773565b91506141598261411a565b602082019050919050565b5f6020820190508181035f83015261417b81614142565b9050919050565b7f54686520636f6e747261637420697320706175736564000000000000000000005f82015250565b5f6141b6601683613773565b91506141c182614182565b602082019050919050565b5f6020820190508181035f8301526141e3816141aa565b9050919050565b7f596f7520616c7265616479206f776e20612072656164657220746f6b656e2e005f82015250565b5f61421e601f83613773565b9150614229826141ea565b602082019050919050565b5f6020820190508181035f83015261424b81614212565b9050919050565b7f4e6f206d6f72652072656164657220746f6b656e7320746f206d696e742100005f82015250565b5f614286601e83613773565b915061429182614252565b602082019050919050565b5f6020820190508181035f8301526142b38161427a565b9050919050565b7f596f75206e65656420746f206265206e6f6d696e6174656420696e206f7264655f8201527f7220746f206d696e7420612072656164657220746f6b656e2e00000000000000602082015250565b5f614314603983613773565b915061431f826142ba565b604082019050919050565b5f6020820190508181035f83015261434181614308565b9050919050565b7f43616e6e6f74206e6f6d696e61746520616e20616464726573732e20596f75205f8201527f646f6e2774206f776e20612072656164657220746f6b656e207965742e000000602082015250565b5f6143a2603d83613773565b91506143ad82614348565b604082019050919050565b5f6020820190508181035f8301526143cf81614396565b9050919050565b7f596f7520616c7265616479206e6f6d696e617465642061206d6178696d756d205f8201527f6f662033206e6f6d696e6565732e000000000000000000000000000000000000602082015250565b5f614430602e83613773565b915061443b826143d6565b604082019050919050565b5f6020820190508181035f83015261445d81614424565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f412063686f73656e206e6f6d696e656520697320696e656c696769626c6520285f8201527f616c7265616479206e6f6d696e6174656420627920736f6d656f6e6520656c7360208201527f652c2068617320616c7265616479206d696e746564206f7220616c726561647960408201527f206a6f696e656420612063726577290000000000000000000000000000000000606082015250565b5f614537606f83613773565b915061454282614491565b608082019050919050565b5f6020820190508181035f8301526145648161452b565b9050919050565b5f60408201905061457e5f83018561368e565b61458b602083018461368e565b9392505050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026145f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826145bd565b61460286836145bd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61463d6146386146338461361d565b61461a565b61361d565b9050919050565b5f819050919050565b61465683614623565b61466a61466282614644565b8484546145c9565b825550505050565b5f90565b61467e614672565b61468981848461464d565b505050565b5b818110156146ac576146a15f82614676565b60018101905061468f565b5050565b601f8211156146f1576146c28161459c565b6146cb846145ae565b810160208510156146da578190505b6146ee6146e6856145ae565b83018261468e565b50505b505050565b5f82821c905092915050565b5f6147115f19846008026146f6565b1980831691505092915050565b5f6147298383614702565b9150826002028217905092915050565b6147438383614592565b67ffffffffffffffff81111561475c5761475b61393f565b5b6147668254614066565b6147718282856146b0565b5f601f83116001811461479e575f841561478c578287013590505b614796858261471e565b8655506147fd565b601f1984166147ac8661459c565b5f5b828110156147d3578489013582556001820191506020850194506020810190506147ae565b868310156147f057848901356147ec601f891682614702565b8355505b6001600288020188555050505b50505050505050565b5f6148118385613773565b935061481e838584613aab565b614827836137ab565b840190509392505050565b5f6020820190508181035f83015261484b818486614806565b90509392505050565b7f496e656c696769626c6520637265772069642e000000000000000000000000005f82015250565b5f614888601383613773565b915061489382614854565b602082019050919050565b5f6020820190508181035f8301526148b58161487c565b9050919050565b7f43616e6e6f74206a6f696e20637265772e20596f7520616c7265616479206a6f5f8201527f696e6564206120637265772e0000000000000000000000000000000000000000602082015250565b5f614916602c83613773565b9150614921826148bc565b604082019050919050565b5f6020820190508181035f8301526149438161490a565b9050919050565b7f43616e6e6f74206a6f696e20637265772e20596f7520646f6e2774206f776e205f8201527f612072656164657220746f6b656e207965742e00000000000000000000000000602082015250565b5f6149a4603383613773565b91506149af8261494a565b604082019050919050565b5f6020820190508181035f8301526149d181614998565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614a0f8261361d565b9150614a1a8361361d565b9250828203905081811115614a3257614a316149d8565b5b92915050565b7f4372657720697320616c726561647920636f6d706c6574652e000000000000005f82015250565b5f614a6c601983613773565b9150614a7782614a38565b602082019050919050565b5f6020820190508181035f830152614a9981614a60565b9050919050565b5f614aaa8261361d565b9150614ab58361361d565b9250828202614ac38161361d565b91508282048414831517614ada57614ad96149d8565b5b5092915050565b7f596f752063616e6e6f74207472616e73666572206120746f6b656e206265666f5f8201527f726520616c6c206372657773206172652066756c6c79206a6f696e656420286160208201527f6c6c20657373617920746f6b656e7320617265206d696e746564292100000000604082015250565b5f614b61605c83613773565b9150614b6c82614ae1565b606082019050919050565b5f6020820190508181035f830152614b8e81614b55565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b614bcb82613769565b67ffffffffffffffff811115614be457614be361393f565b5b614bee8254614066565b614bf98282856146b0565b5f60209050601f831160018114614c2a575f8415614c18578287015190505b614c22858261471e565b865550614c89565b601f198416614c388661459c565b5f5b82811015614c5f57848901518255600182019150602085019450602081019050614c3a565b86831015614c7c5784890151614c78601f891682614702565b8355505b6001600288020188555050505b505050505050565b5f614c9b8261361d565b9150614ca68361361d565b9250828201905080821115614cbe57614cbd6149d8565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f614ce882614cc4565b614cf28185614cce565b9350614d02818560208601613783565b614d0b816137ab565b840191505092915050565b5f60a082019050614d295f830188613e4b565b614d366020830187613e4b565b614d43604083018661368e565b614d50606083018561368e565b8181036080830152614d628184614cde565b90509695505050505050565b5f81519050614d7c816136e1565b92915050565b5f60208284031215614d9757614d966135bb565b5b5f614da484828501614d6e565b91505092915050565b5f60a082019050614dc05f830188613e4b565b614dcd6020830187613e4b565b8181036040830152614ddf8186613dcf565b90508181036060830152614df38185613dcf565b90508181036080830152614e078184614cde565b90509695505050505050565b5f608082019050614e265f830187613e4b565b614e33602083018661368e565b614e40604083018561368e565b614e4d606083018461368e565b95945050505050565b5f6040820190508181035f830152614e6e8185613dcf565b90508181036020830152614e828184613dcf565b9050939250505056fea26469706673582212204c4c2cef07398b4ae068d1bada926886c62788eac677dd296b1648fa3502649d64736f6c63430008180033697066733a2f2f516d565166416273364a7739365a61366f674d384a38363537416932394b597052664177574a5078487a67464b71697066733a2f2f516d513875454e314a67754843357973637236466b4636576e6141684544794a696d6d4a6d743332374a433274712f