60806040526040518060400160405280600981526020017f5045504520436c756200000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50455045000000000000000000000000000000000000000000000000000000008152508160039081620000819190620005a8565b508060049081620000939190620005a8565b5050506000620000a86200017a60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001746200015b6200018260201b60201c565b6b033b2e3c9fd0803ce8000000620001ac60201b60201c565b620007aa565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200021e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021590620006f0565b60405180910390fd5b62000232600083836200032460201b60201c565b806002600082825462000246919062000741565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200029d919062000741565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200030491906200078d565b60405180910390a362000320600083836200032960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003b057607f821691505b602082108103620003c657620003c562000368565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003f1565b6200043c8683620003f1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000489620004836200047d8462000454565b6200045e565b62000454565b9050919050565b6000819050919050565b620004a58362000468565b620004bd620004b48262000490565b848454620003fe565b825550505050565b600090565b620004d4620004c5565b620004e18184846200049a565b505050565b5b818110156200050957620004fd600082620004ca565b600181019050620004e7565b5050565b601f82111562000558576200052281620003cc565b6200052d84620003e1565b810160208510156200053d578190505b620005556200054c85620003e1565b830182620004e6565b50505b505050565b600082821c905092915050565b60006200057d600019846008026200055d565b1980831691505092915050565b60006200059883836200056a565b9150826002028217905092915050565b620005b3826200032e565b67ffffffffffffffff811115620005cf57620005ce62000339565b5b620005db825462000397565b620005e88282856200050d565b600060209050601f8311600181146200062057600084156200060b578287015190505b6200061785826200058a565b86555062000687565b601f1984166200063086620003cc565b60005b828110156200065a5784890151825560018201915060208501945060208101905062000633565b868310156200067a578489015162000676601f8916826200056a565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d8601f836200068f565b9150620006e582620006a0565b602082019050919050565b600060208201905081810360008301526200070b81620006c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200074e8262000454565b91506200075b8362000454565b925082820190508082111562000776576200077562000712565b5b92915050565b620007878162000454565b82525050565b6000602082019050620007a460008301846200077c565b92915050565b611e7980620007ba6000396000f3fe6080604052600436106100ec5760003560e01c8063715018a61161008a578063a9059cbb11610059578063a9059cbb14610317578063dd62ed3e14610354578063f2fde38b14610391578063f9d0831a146103ba576100f3565b8063715018a61461026d5780638da5cb5b1461028457806395d89b41146102af578063a457c2d7146102da576100f3565b806323b872dd116100c657806323b872dd1461018b578063313ce567146101c857806339509351146101f357806370a0823114610230576100f3565b806306fdde03146100f8578063095ea7b31461012357806318160ddd14610160576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d6103e3565b60405161011a9190611400565b60405180910390f35b34801561012f57600080fd5b5061014a600480360381019061014591906114bb565b610475565b6040516101579190611516565b60405180910390f35b34801561016c57600080fd5b50610175610493565b6040516101829190611540565b60405180910390f35b34801561019757600080fd5b506101b260048036038101906101ad919061155b565b61049d565b6040516101bf9190611516565b60405180910390f35b3480156101d457600080fd5b506101dd6105bc565b6040516101ea91906115ca565b60405180910390f35b3480156101ff57600080fd5b5061021a600480360381019061021591906114bb565b6105c5565b6040516102279190611516565b60405180910390f35b34801561023c57600080fd5b50610257600480360381019061025291906115e5565b610671565b6040516102649190611540565b60405180910390f35b34801561027957600080fd5b506102826106b9565b005b34801561029057600080fd5b50610299610811565b6040516102a69190611621565b60405180910390f35b3480156102bb57600080fd5b506102c461083b565b6040516102d19190611400565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc91906114bb565b6108cd565b60405161030e9190611516565b60405180910390f35b34801561032357600080fd5b5061033e600480360381019061033991906114bb565b6109b8565b60405161034b9190611516565b60405180910390f35b34801561036057600080fd5b5061037b6004803603810190610376919061163c565b6109d6565b6040516103889190611540565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b391906115e5565b610a5d565b005b3480156103c657600080fd5b506103e160048036038101906103dc91906115e5565b610c23565b005b6060600380546103f2906116ab565b80601f016020809104026020016040519081016040528092919081815260200182805461041e906116ab565b801561046b5780601f106104405761010080835404028352916020019161046b565b820191906000526020600020905b81548152906001019060200180831161044e57829003601f168201915b5050505050905090565b6000610489610482610f16565b8484610f1e565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e9610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105a55782811015610590576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105879061174e565b60405180910390fd5b6105a48561059c610f16565b858403610f1e565b5b6105b08585856110e7565b60019150509392505050565b60006012905090565b60006106676105d2610f16565b8484600160006105e0610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610662919061179d565b610f1e565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106c1610f16565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107479061181d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461084a906116ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610876906116ab565b80156108c35780601f10610898576101008083540402835291602001916108c3565b820191906000526020600020905b8154815290600101906020018083116108a657829003601f168201915b5050505050905090565b600080600160006108dc610f16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610990906118af565b60405180910390fd5b6109ad6109a4610f16565b85858403610f1e565b600191505092915050565b60006109cc6109c5610f16565b84846110e7565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a65610f16565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb9061181d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611941565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c2b610f16565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb19061181d565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f906119ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e0e5760003373ffffffffffffffffffffffffffffffffffffffff1647604051610d82906119fe565b60006040518083038185875af1925050503d8060008114610dbf576040519150601f19603f3d011682016040523d82523d6000602084013e610dc4565b606091505b5050905080610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff90611a85565b60405180910390fd5b50610f13565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e4e9190611621565b602060405180830381865afa158015610e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8f9190611aba565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ecc929190611ae7565b6020604051808303816000875af1158015610eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0f9190611b3c565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8490611bdb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff390611c6d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110da9190611540565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90611cff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc90611d91565b60405180910390fd5b6111d0838383611366565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d90611e23565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112e9919061179d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134d9190611540565b60405180910390a361136084848461136b565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113aa57808201518184015260208101905061138f565b60008484015250505050565b6000601f19601f8301169050919050565b60006113d282611370565b6113dc818561137b565b93506113ec81856020860161138c565b6113f5816113b6565b840191505092915050565b6000602082019050818103600083015261141a81846113c7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061145282611427565b9050919050565b61146281611447565b811461146d57600080fd5b50565b60008135905061147f81611459565b92915050565b6000819050919050565b61149881611485565b81146114a357600080fd5b50565b6000813590506114b58161148f565b92915050565b600080604083850312156114d2576114d1611422565b5b60006114e085828601611470565b92505060206114f1858286016114a6565b9150509250929050565b60008115159050919050565b611510816114fb565b82525050565b600060208201905061152b6000830184611507565b92915050565b61153a81611485565b82525050565b60006020820190506115556000830184611531565b92915050565b60008060006060848603121561157457611573611422565b5b600061158286828701611470565b935050602061159386828701611470565b92505060406115a4868287016114a6565b9150509250925092565b600060ff82169050919050565b6115c4816115ae565b82525050565b60006020820190506115df60008301846115bb565b92915050565b6000602082840312156115fb576115fa611422565b5b600061160984828501611470565b91505092915050565b61161b81611447565b82525050565b60006020820190506116366000830184611612565b92915050565b6000806040838503121561165357611652611422565b5b600061166185828601611470565b925050602061167285828601611470565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116c357607f821691505b6020821081036116d6576116d561167c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061173860288361137b565b9150611743826116dc565b604082019050919050565b600060208201905081810360008301526117678161172b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117a882611485565b91506117b383611485565b92508282019050808211156117cb576117ca61176e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061180760208361137b565b9150611812826117d1565b602082019050919050565b60006020820190508181036000830152611836816117fa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061189960258361137b565b91506118a48261183d565b604082019050919050565b600060208201905081810360008301526118c88161188c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061192b60268361137b565b9150611936826118cf565b604082019050919050565b6000602082019050818103600083015261195a8161191e565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b600061199760208361137b565b91506119a282611961565b602082019050919050565b600060208201905081810360008301526119c68161198a565b9050919050565b600081905092915050565b50565b60006119e86000836119cd565b91506119f3826119d8565b600082019050919050565b6000611a09826119db565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000611a6f603a8361137b565b9150611a7a82611a13565b604082019050919050565b60006020820190508181036000830152611a9e81611a62565b9050919050565b600081519050611ab48161148f565b92915050565b600060208284031215611ad057611acf611422565b5b6000611ade84828501611aa5565b91505092915050565b6000604082019050611afc6000830185611612565b611b096020830184611531565b9392505050565b611b19816114fb565b8114611b2457600080fd5b50565b600081519050611b3681611b10565b92915050565b600060208284031215611b5257611b51611422565b5b6000611b6084828501611b27565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bc560248361137b565b9150611bd082611b69565b604082019050919050565b60006020820190508181036000830152611bf481611bb8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c5760228361137b565b9150611c6282611bfb565b604082019050919050565b60006020820190508181036000830152611c8681611c4a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611ce960258361137b565b9150611cf482611c8d565b604082019050919050565b60006020820190508181036000830152611d1881611cdc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d7b60238361137b565b9150611d8682611d1f565b604082019050919050565b60006020820190508181036000830152611daa81611d6e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e0d60268361137b565b9150611e1882611db1565b604082019050919050565b60006020820190508181036000830152611e3c81611e00565b905091905056fea264697066735822122056822545aeb38f96b902e0d59ce7d86e32d53c3c6896ac97fcffa671f41c9e6b64736f6c63430008120033