0x60806040523480156200001157600080fd5b506040518060400160405280600681526020017f47656c65766500000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f474c56000000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004f8565b508060049081620000a19190620004f8565b505050620000c03369152d02c7e14af68000006200010760201b60201c565b33600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006fa565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001709062000640565b60405180910390fd5b6200018d600083836200027460201b60201c565b8060026000828254620001a1919062000691565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002549190620006dd565b60405180910390a362000270600083836200027960201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030057607f821691505b602082108103620003165762000315620002b8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000341565b6200038c868362000341565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003d9620003d3620003cd84620003a4565b620003ae565b620003a4565b9050919050565b6000819050919050565b620003f583620003b8565b6200040d6200040482620003e0565b8484546200034e565b825550505050565b600090565b6200042462000415565b62000431818484620003ea565b505050565b5b8181101562000459576200044d6000826200041a565b60018101905062000437565b5050565b601f821115620004a85762000472816200031c565b6200047d8462000331565b810160208510156200048d578190505b620004a56200049c8562000331565b83018262000436565b50505b505050565b600082821c905092915050565b6000620004cd60001984600802620004ad565b1980831691505092915050565b6000620004e88383620004ba565b9150826002028217905092915050565b62000503826200027e565b67ffffffffffffffff8111156200051f576200051e62000289565b5b6200052b8254620002e7565b620005388282856200045d565b600060209050601f8311600181146200057057600084156200055b578287015190505b620005678582620004da565b865550620005d7565b601f19841662000580866200031c565b60005b82811015620005aa5784890151825560018201915060208501945060208101905062000583565b86831015620005ca5784890151620005c6601f891682620004ba565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000628601f83620005df565b91506200063582620005f0565b602082019050919050565b600060208201905081810360008301526200065b8162000619565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200069e82620003a4565b9150620006ab83620003a4565b9250828201905080821115620006c657620006c562000662565b5b92915050565b620006d781620003a4565b82525050565b6000602082019050620006f46000830184620006cc565b92915050565b61190d806200070a6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c578063a457c2d711610066578063a457c2d71461025f578063a9059cbb1461028f578063dd62ed3e146102bf578063f851a440146102ef576100ea565b806342966c68146101f557806370a082311461021157806395d89b4114610241576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806340c10f19146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030d565b6040516101049190610f97565b60405180910390f35b61012760048036038101906101229190611052565b61039f565b60405161013491906110ad565b60405180910390f35b6101456103c2565b60405161015291906110d7565b60405180910390f35b610175600480360381019061017091906110f2565b6103cc565b60405161018291906110ad565b60405180910390f35b6101936103fb565b6040516101a09190611161565b60405180910390f35b6101c360048036038101906101be9190611052565b610404565b6040516101d091906110ad565b60405180910390f35b6101f360048036038101906101ee9190611052565b61043b565b005b61020f600480360381019061020a919061117c565b6104d9565b005b61022b600480360381019061022691906111a9565b6104e6565b60405161023891906110d7565b60405180910390f35b61024961052e565b6040516102569190610f97565b60405180910390f35b61027960048036038101906102749190611052565b6105c0565b60405161028691906110ad565b60405180910390f35b6102a960048036038101906102a49190611052565b610637565b6040516102b691906110ad565b60405180910390f35b6102d960048036038101906102d491906111d6565b61065a565b6040516102e691906110d7565b60405180910390f35b6102f76106e1565b6040516103049190611225565b60405180910390f35b60606003805461031c9061126f565b80601f01602080910402602001604051908101604052809291908181526020018280546103489061126f565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000806103aa610707565b90506103b781858561070f565b600191505092915050565b6000600254905090565b6000806103d7610707565b90506103e48582856108d8565b6103ef858585610964565b60019150509392505050565b60006012905090565b60008061040f610707565b9050610430818585610421858961065a565b61042b91906112cf565b61070f565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c29061134f565b60405180910390fd5b6104d58282610bda565b5050565b6104e33382610d30565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053d9061126f565b80601f01602080910402602001604051908101604052809291908181526020018280546105699061126f565b80156105b65780601f1061058b576101008083540402835291602001916105b6565b820191906000526020600020905b81548152906001019060200180831161059957829003601f168201915b5050505050905090565b6000806105cb610707565b905060006105d9828661065a565b90508381101561061e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610615906113e1565b60405180910390fd5b61062b828686840361070f565b60019250505092915050565b600080610642610707565b905061064f818585610964565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077590611473565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e490611505565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108cb91906110d7565b60405180910390a3505050565b60006108e4848461065a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461095e5781811015610950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094790611571565b60405180910390fd5b61095d848484840361070f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca90611603565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990611695565b60405180910390fd5b610a4d838383610efd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90611727565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bc191906110d7565b60405180910390a3610bd4848484610f02565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090611793565b60405180910390fd5b610c5560008383610efd565b8060026000828254610c6791906112cf565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d1891906110d7565b60405180910390a3610d2c60008383610f02565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9690611825565b60405180910390fd5b610dab82600083610efd565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e28906118b7565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ee491906110d7565b60405180910390a3610ef883600084610f02565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f41578082015181840152602081019050610f26565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f6982610f07565b610f738185610f12565b9350610f83818560208601610f23565b610f8c81610f4d565b840191505092915050565b60006020820190508181036000830152610fb18184610f5e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610fe982610fbe565b9050919050565b610ff981610fde565b811461100457600080fd5b50565b60008135905061101681610ff0565b92915050565b6000819050919050565b61102f8161101c565b811461103a57600080fd5b50565b60008135905061104c81611026565b92915050565b6000806040838503121561106957611068610fb9565b5b600061107785828601611007565b92505060206110888582860161103d565b9150509250929050565b60008115159050919050565b6110a781611092565b82525050565b60006020820190506110c2600083018461109e565b92915050565b6110d18161101c565b82525050565b60006020820190506110ec60008301846110c8565b92915050565b60008060006060848603121561110b5761110a610fb9565b5b600061111986828701611007565b935050602061112a86828701611007565b925050604061113b8682870161103d565b9150509250925092565b600060ff82169050919050565b61115b81611145565b82525050565b60006020820190506111766000830184611152565b92915050565b60006020828403121561119257611191610fb9565b5b60006111a08482850161103d565b91505092915050565b6000602082840312156111bf576111be610fb9565b5b60006111cd84828501611007565b91505092915050565b600080604083850312156111ed576111ec610fb9565b5b60006111fb85828601611007565b925050602061120c85828601611007565b9150509250929050565b61121f81610fde565b82525050565b600060208201905061123a6000830184611216565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061128757607f821691505b60208210810361129a57611299611240565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112da8261101c565b91506112e58361101c565b92508282019050808211156112fd576112fc6112a0565b5b92915050565b7f6f6e6c792061646d696e00000000000000000000000000000000000000000000600082015250565b6000611339600a83610f12565b915061134482611303565b602082019050919050565b600060208201905081810360008301526113688161132c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006113cb602583610f12565b91506113d68261136f565b604082019050919050565b600060208201905081810360008301526113fa816113be565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061145d602483610f12565b915061146882611401565b604082019050919050565b6000602082019050818103600083015261148c81611450565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006114ef602283610f12565b91506114fa82611493565b604082019050919050565b6000602082019050818103600083015261151e816114e2565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061155b601d83610f12565b915061156682611525565b602082019050919050565b6000602082019050818103600083015261158a8161154e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006115ed602583610f12565b91506115f882611591565b604082019050919050565b6000602082019050818103600083015261161c816115e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061167f602383610f12565b915061168a82611623565b604082019050919050565b600060208201905081810360008301526116ae81611672565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611711602683610f12565b915061171c826116b5565b604082019050919050565b6000602082019050818103600083015261174081611704565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061177d601f83610f12565b915061178882611747565b602082019050919050565b600060208201905081810360008301526117ac81611770565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061180f602183610f12565b915061181a826117b3565b604082019050919050565b6000602082019050818103600083015261183e81611802565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006118a1602283610f12565b91506118ac82611845565b604082019050919050565b600060208201905081810360008301526118d081611894565b905091905056fea26469706673582212204f8fb68a50e6c7ef0bf16b1071af9737aeb7e77442b3e187d2066937a32017cc64736f6c63430008120033