[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "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": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "areTaxesEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burnPercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnProtocol", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnProtocolThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "disableApprove", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disableTokenApproveWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "enableApprove", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "enableTokenApproveWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_wallet", "type": "address" }, { "internalType": "bool", "name": "_isExcluded", "type": "bool" } ], "name": "excludeFromTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "getTax", "outputs": [ { "internalType": "uint16", "name": "tax", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pairAddress", "type": "address" } ], "name": "isPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "components": [ { "internalType": "uint16", "name": "buyTax", "type": "uint16" }, { "internalType": "uint16", "name": "sellTax", "type": "uint16" } ], "internalType": "struct BurnProtocolToken.Tax", "name": "pairTax", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isTokenApproveWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "uint256", "name": "_burnPercentage", "type": "uint256" } ], "name": "setBurnPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_burnProtocol", "type": "address" } ], "name": "setBurnProtocol", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pairAddress", "type": "address" }, { "internalType": "uint16", "name": "buyTax", "type": "uint16" }, { "internalType": "uint16", "name": "sellTax", "type": "uint16" } ], "name": "setPairTaxes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5073dac355df4f68a5f744866b75e871cc41c5e865c66040518060400160405280600c81526020017f4275726e50726f746f636f6c00000000000000000000000000000000000000008152506040518060400160405280600481526020017f4255524e0000000000000000000000000000000000000000000000000000000081525081600390816100a1919061136a565b5080600490816100b1919061136a565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101265760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161011d919061147d565b60405180910390fd5b6101358161081260201b60201c565b5061016673dac355df4f68a5f744866b75e871cc41c5e865c66b01ee034ab2eefa7b01072c086108d860201b60201c565b61018e738b399771d155d2941c01fee232772d56c6362d5763c80769a86108d860201b60201c565b6101bd731abaaf41036ee50cb04a20ad9313681a5c4baf726a02ad4eafb7ade7660aeba86108d860201b60201c565b6101ec735b68e776f3e3147e37d16c5f74d739a05eb0de5e6a27e3b1350f03961e9a4dc86108d860201b60201c565b61021b739f7f51855d48152c53ed9d6cc6ec5202d379f6cc6a0446ea08eb31b51e55c7c86108d860201b60201c565b6102467339739a9cb5f7fc23a5370b940d4691018c2ca74e66e54bbd8f2d15f86108d860201b60201c565b610272737438b3c1dfa0c5581e8d603ac058e73da11e2c5b670118a07cb34b02506108d860201b60201c565b61029d73b07bfb51d0eb63f20e0629eaf9395b2e18c51fc9664134d078776c586108d860201b60201c565b6102c973acc23193ea9c00ee46dce006d99d07c1aaccb4986701010d529dfabc086108d860201b60201c565b6102f4737237586b886959d1f3113692a77e5fe56375c48d66516b70ee057b686108d860201b60201c565b610323730226b32261c6b60b6825222cccef6745660038526a1552aebcdeabc7e8b1b7106108d860201b60201c565b61034f73c6268bca3ef8c394909276f7912cf383e04ffbd267010fad044a4476986108d860201b60201c565b61037a739d64ca189f761b31534ed6d05530409347b2c740667c52bbeba851806108d860201b60201c565b6103a973dcd763263b04fb60b5b026c272d0b7bef737af6e6a2cce396e82cad16de302b86108d860201b60201c565b6103d77333717bd8dfa56cda60617beb9620329f7f550696697145df521c41ca8839f06108d860201b60201c565b6104067399f2da74b6021ce80df53df02ddd0700e5ae2f066a40fb8df3ff7e1fb761a7e86108d860201b60201c565b6104357355d47e0139abbb71c304041502f7e4f5ac62167e6a3f1852c1d00d8ce5a64cb06108d860201b60201c565b610460739a3c3b82656a4f3c8e20b48ed90e44105586a22666b3151c311955f86108d860201b60201c565b6104887365abc319b70cac4b33457ac889d6ee9b294aa1d663fa0000006108d860201b60201c565b6104b773865955e44efa08c54b5dc43b4d4f024280aade9a6a04085a9c8db62c84057a606108d860201b60201c565b6104e3735d8afb11d396b0a9744091fca92dfafa9de9894067011539430bfa68e06108d860201b60201c565b61050f73ef92cb55a0ad0748bb28b0cea586b2693b8dd536670119f3cd68e9cf486108d860201b60201c565b61053a731cca8c8530a509004fb61bf193872f895110e4e466dbb27f515413e86108d860201b60201c565b61056973c05a8e58bce28fd4c5934b045bcd5bb3c7d0aba26a19ff535f848b43c419f2606108d860201b60201c565b61059873161fda6b1b857a09819408f1dc6483cec430515d6a061b22d874d1d7fce663386108d860201b60201c565b6105c7738ebfba0b1f92df8153ab767b8f2d4bb3a89547476a03bd934e17009e20b2e7386108d860201b60201c565b6105f373325c52870e56699c8b662647a1d842a2768ade2367012f5054bf6c1fd06108d860201b60201c565b61062273784e31ffe318a422c104215ed4830114ae7538306a295be96f77b46625f531e86108d860201b60201c565b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a600073dac355df4f68a5f744866b75e871cc41c5e865c673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff02191690831515021790555061032060068190555073dac355df4f68a5f744866b75e871cc41c5e865c6600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6008819055506001600c600073cedd366065a146a039b92db35756ecd7688fcc7773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611678565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361094a5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610941919061147d565b60405180910390fd5b61095c6000838361096060201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806109c75750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156109e2576109dd838383610b8760201b60201c565b610b82565b60006103e8826109f88686610dac60201b60201c565b61ffff16610a0691906114c7565b610a109190611538565b905060008103610a3057610a2b848484610b8760201b60201c565b610b80565b610a4c84848385610a419190611569565b610b8760201b60201c565b60006103e860065483610a5f91906114c7565b610a699190611538565b9050610a7b8582610f6460201b60201c565b610ab985600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168385610aae9190611569565b610b8760201b60201c565b600854610aed600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610fec60201b60201c565b1115610b7e57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16604051610b38906115ce565b6000604051808303816000865af19150503d8060008114610b75576040519150601f19603f3d011682016040523d82523d6000602084013e610b7a565b606091505b5050505b505b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bd9578060026000828254610bcd91906115e3565b92505081905550610cac565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c65578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c5c93929190611626565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf55780600260008282540392505081905550610d42565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d9f919061165d565b60405180910390a3505050565b6000600d60009054906101000a900460ff161580610e135750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610e675750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610e755760009050610f5e565b600080610e878461103460201b60201c565b91509150818015610ee15750600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15610ef457806020015192505050610f5e565b5050600080610f088561103460201b60201c565b91509150818015610f4457508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610f5757806000015192505050610f5e565b6000925050505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd65760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610fcd919061147d565b60405180910390fd5b610fe88260008361096060201b60201c565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061103e6110f8565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff168152505090506000816000015161ffff161415806110ed57506000816020015161ffff1614155b819250925050915091565b6040518060400160405280600061ffff168152602001600061ffff1681525090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061119b57607f821691505b6020821081036111ae576111ad611154565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026112167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826111d9565b61122086836111d9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061126761126261125d84611238565b611242565b611238565b9050919050565b6000819050919050565b6112818361124c565b61129561128d8261126e565b8484546111e6565b825550505050565b600090565b6112aa61129d565b6112b5818484611278565b505050565b5b818110156112d9576112ce6000826112a2565b6001810190506112bb565b5050565b601f82111561131e576112ef816111b4565b6112f8846111c9565b81016020851015611307578190505b61131b611313856111c9565b8301826112ba565b50505b505050565b600082821c905092915050565b600061134160001984600802611323565b1980831691505092915050565b600061135a8383611330565b9150826002028217905092915050565b6113738261111a565b67ffffffffffffffff81111561138c5761138b611125565b5b6113968254611183565b6113a18282856112dd565b600060209050601f8311600181146113d457600084156113c2578287015190505b6113cc858261134e565b865550611434565b601f1984166113e2866111b4565b60005b8281101561140a578489015182556001820191506020850194506020810190506113e5565b868310156114275784890151611423601f891682611330565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114678261143c565b9050919050565b6114778161145c565b82525050565b6000602082019050611492600083018461146e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114d282611238565b91506114dd83611238565b92508282026114eb81611238565b9150828204841483151761150257611501611498565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061154382611238565b915061154e83611238565b92508261155e5761155d611509565b5b828204905092915050565b600061157482611238565b915061157f83611238565b925082820390508181111561159757611596611498565b5b92915050565b600081905092915050565b50565b60006115b860008361159d565b91506115c3826115a8565b600082019050919050565b60006115d9826115ab565b9150819050919050565b60006115ee82611238565b91506115f983611238565b925082820190508082111561161157611610611498565b5b92915050565b61162081611238565b82525050565b600060608201905061163b600083018661146e565b6116486020830185611617565b6116556040830184611617565b949350505050565b60006020820190506116726000830184611617565b92915050565b61200a806116876000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806395d89b4111610104578063d2dcbbd2116100a2578063f01f20df11610071578063f01f20df1461050c578063f115dbfb1461052a578063f2fde38b14610548578063f450e32d14610564576101da565b8063d2dcbbd214610483578063d523e092146104a1578063dd62ed3e146104ab578063e5e31b13146104db576101da565b8063b0f67dfd116100de578063b0f67dfd14610425578063c3f0d3271461042f578063c6a306471461044b578063caf77ff514610467576101da565b806395d89b41146103bb578063995d2e15146103d9578063a9059cbb146103f5576101da565b806342966c681161017c578063715018a61161014b578063715018a61461035957806372ccc2db146103635780638d0eca09146103815780638da5cb5b1461039d576101da565b806342966c68146102bf57806356101b25146102db578063572078661461030b57806370a0823114610329576101da565b806318160ddd116101b857806318160ddd1461023757806323b872dd14610255578063313ce5671461028557806336a3c134146102a3576101da565b806306fdde03146101df578063095ea7b3146101fd57806314e97d1a1461022d575b600080fd5b6101e761056e565b6040516101f4919061191f565b60405180910390f35b610217600480360381019061021291906119da565b610600565b6040516102249190611a35565b60405180910390f35b610235610623565b005b61023f610648565b60405161024c9190611a5f565b60405180910390f35b61026f600480360381019061026a9190611a7a565b610652565b60405161027c9190611a35565b60405180910390f35b61028d610681565b60405161029a9190611ae9565b60405180910390f35b6102bd60048036038101906102b89190611b04565b61068a565b005b6102d960048036038101906102d49190611b31565b6106d6565b005b6102f560048036038101906102f09190611b5e565b6106e3565b6040516103029190611bbb565b60405180910390f35b61031361088f565b6040516103209190611be5565b60405180910390f35b610343600480360381019061033e9190611b04565b6108b5565b6040516103509190611a5f565b60405180910390f35b6103616108fd565b005b61036b610911565b6040516103789190611a5f565b60405180910390f35b61039b60048036038101906103969190611c2c565b610917565b005b6103a56109c9565b6040516103b29190611be5565b60405180910390f35b6103c36109f3565b6040516103d0919061191f565b60405180910390f35b6103f360048036038101906103ee9190611b04565b610a85565b005b61040f600480360381019061040a91906119da565b610ae8565b60405161041c9190611a35565b60405180910390f35b61042d610b0b565b005b61044960048036038101906104449190611b31565b610b30565b005b61046560048036038101906104609190611cab565b610b42565b005b610481600480360381019061047c9190611b04565b610ba5565b005b61048b610c08565b6040516104989190611a35565b60405180910390f35b6104a9610c1b565b005b6104c560048036038101906104c09190611b5e565b610c40565b6040516104d29190611a5f565b60405180910390f35b6104f560048036038101906104f09190611b04565b610cc7565b604051610503929190611d29565b60405180910390f35b610514610d8b565b6040516105219190611a5f565b60405180910390f35b610532610d91565b60405161053f9190611a35565b60405180910390f35b610562600480360381019061055d9190611b04565b610da4565b005b61056c610e2a565b005b60606003805461057d90611d81565b80601f01602080910402602001604051908101604052809291908181526020018280546105a990611d81565b80156105f65780601f106105cb576101008083540402835291602001916105f6565b820191906000526020600020905b8154815290600101906020018083116105d957829003601f168201915b5050505050905090565b60008061060b610e4f565b9050610618818585610e57565b600191505092915050565b61062b610e69565b6000600960006101000a81548160ff021916908315150217905550565b6000600254905090565b60008061065d610e4f565b905061066a858285610ef0565b610675858585610f84565b60019150509392505050565b60006012905090565b610692610e69565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6106e03382611078565b50565b6000600d60009054906101000a900460ff16158061074a5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061079e5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156107ac5760009050610889565b6000806107b884610cc7565b915091508180156108125750600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561082557806020015192505050610889565b505060008061083385610cc7565b9150915081801561086f57508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1561088257806000015192505050610889565b6000925050505b92915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610905610e69565b61090f60006110fa565b565b60085481565b61091f610e69565b60405180604001604052808361ffff1681526020018261ffff16815250600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff160217905550905050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a0290611d81565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2e90611d81565b8015610a7b5780601f10610a5057610100808354040283529160200191610a7b565b820191906000526020600020905b815481529060010190602001808311610a5e57829003601f168201915b5050505050905090565b610a8d610e69565b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080610af3610e4f565b9050610b00818585610f84565b600191505092915050565b610b13610e69565b6001600d60006101000a81548160ff021916908315150217905550565b610b38610e69565b8060068190555050565b610b4a610e69565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610bad610e69565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900460ff1681565b610c23610e69565b6000600d60006101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610cd161186d565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff168152505090506000816000015161ffff16141580610d8057506000816020015161ffff1614155b819250925050915091565b60065481565b600960009054906101000a900460ff1681565b610dac610e69565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e1e5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610e159190611be5565b60405180910390fd5b610e27816110fa565b50565b610e32610e69565b6001600960006101000a81548160ff021916908315150217905550565b600033905090565b610e6483838360016111c0565b505050565b610e71610e4f565b73ffffffffffffffffffffffffffffffffffffffff16610e8f6109c9565b73ffffffffffffffffffffffffffffffffffffffff1614610eee57610eb2610e4f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ee59190611be5565b60405180910390fd5b565b6000610efc8484610c40565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f7e5781811015610f6e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610f6593929190611db2565b60405180910390fd5b610f7d848484840360006111c0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ff65760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610fed9190611be5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110685760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161105f9190611be5565b60405180910390fd5b611073838383611274565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110ea5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110e19190611be5565b60405180910390fd5b6110f682600083611274565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600960009054906101000a900460ff161561126257600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890611e35565b60405180910390fd5b5b61126e84848484611471565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112db5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156112f0576112eb838383611648565b61146c565b60006103e88261130086866106e3565b61ffff1661130e9190611e84565b6113189190611ef5565b9050600081036113325761132d848484611648565b61146a565b611348848483856113439190611f26565b611648565b60006103e86006548361135b9190611e84565b6113659190611ef5565b90506113718582611078565b6113a985600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683856113a49190611f26565b611648565b6008546113d7600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108b5565b111561146857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660405161142290611f8b565b6000604051808303816000865af19150503d806000811461145f576040519150601f19603f3d011682016040523d82523d6000602084013e611464565b606091505b5050505b505b505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114e35760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016114da9190611be5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115555760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161154c9190611be5565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611642578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516116399190611a5f565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361169a57806002600082825461168e9190611fa0565b9250508190555061176d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611726578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161171d93929190611db2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117b65780600260008282540392505081905550611803565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118609190611a5f565b60405180910390a3505050565b6040518060400160405280600061ffff168152602001600061ffff1681525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156118c95780820151818401526020810190506118ae565b60008484015250505050565b6000601f19601f8301169050919050565b60006118f18261188f565b6118fb818561189a565b935061190b8185602086016118ab565b611914816118d5565b840191505092915050565b6000602082019050818103600083015261193981846118e6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061197182611946565b9050919050565b61198181611966565b811461198c57600080fd5b50565b60008135905061199e81611978565b92915050565b6000819050919050565b6119b7816119a4565b81146119c257600080fd5b50565b6000813590506119d4816119ae565b92915050565b600080604083850312156119f1576119f0611941565b5b60006119ff8582860161198f565b9250506020611a10858286016119c5565b9150509250929050565b60008115159050919050565b611a2f81611a1a565b82525050565b6000602082019050611a4a6000830184611a26565b92915050565b611a59816119a4565b82525050565b6000602082019050611a746000830184611a50565b92915050565b600080600060608486031215611a9357611a92611941565b5b6000611aa18682870161198f565b9350506020611ab28682870161198f565b9250506040611ac3868287016119c5565b9150509250925092565b600060ff82169050919050565b611ae381611acd565b82525050565b6000602082019050611afe6000830184611ada565b92915050565b600060208284031215611b1a57611b19611941565b5b6000611b288482850161198f565b91505092915050565b600060208284031215611b4757611b46611941565b5b6000611b55848285016119c5565b91505092915050565b60008060408385031215611b7557611b74611941565b5b6000611b838582860161198f565b9250506020611b948582860161198f565b9150509250929050565b600061ffff82169050919050565b611bb581611b9e565b82525050565b6000602082019050611bd06000830184611bac565b92915050565b611bdf81611966565b82525050565b6000602082019050611bfa6000830184611bd6565b92915050565b611c0981611b9e565b8114611c1457600080fd5b50565b600081359050611c2681611c00565b92915050565b600080600060608486031215611c4557611c44611941565b5b6000611c538682870161198f565b9350506020611c6486828701611c17565b9250506040611c7586828701611c17565b9150509250925092565b611c8881611a1a565b8114611c9357600080fd5b50565b600081359050611ca581611c7f565b92915050565b60008060408385031215611cc257611cc1611941565b5b6000611cd08582860161198f565b9250506020611ce185828601611c96565b9150509250929050565b611cf481611b9e565b82525050565b604082016000820151611d106000850182611ceb565b506020820151611d236020850182611ceb565b50505050565b6000606082019050611d3e6000830185611a26565b611d4b6020830184611cfa565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d9957607f821691505b602082108103611dac57611dab611d52565b5b50919050565b6000606082019050611dc76000830186611bd6565b611dd46020830185611a50565b611de16040830184611a50565b949350505050565b7f4255524e3a20617070726f7665206e6f7420616c6c6f77656400000000000000600082015250565b6000611e1f60198361189a565b9150611e2a82611de9565b602082019050919050565b60006020820190508181036000830152611e4e81611e12565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e8f826119a4565b9150611e9a836119a4565b9250828202611ea8816119a4565b91508282048414831517611ebf57611ebe611e55565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611f00826119a4565b9150611f0b836119a4565b925082611f1b57611f1a611ec6565b5b828204905092915050565b6000611f31826119a4565b9150611f3c836119a4565b9250828203905081811115611f5457611f53611e55565b5b92915050565b600081905092915050565b50565b6000611f75600083611f5a565b9150611f8082611f65565b600082019050919050565b6000611f9682611f68565b9150819050919050565b6000611fab826119a4565b9150611fb6836119a4565b9250828201905080821115611fce57611fcd611e55565b5b9291505056fea2646970667358221220fa578ac6172f967dadd04556287221d8c75f3ca47bc5dc4cd262b0d60100b98a64736f6c634300081c0033