60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4d47524f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d47524f0000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000412565b508060049081620000a1919062000412565b505050620000c4620000b8620000ca60201b60201c565b620000d260201b60201c565b620004f9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200021a57607f821691505b60208210810362000230576200022f620001d2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200029a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200025b565b620002a686836200025b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002f3620002ed620002e784620002be565b620002c8565b620002be565b9050919050565b6000819050919050565b6200030f83620002d2565b620003276200031e82620002fa565b84845462000268565b825550505050565b600090565b6200033e6200032f565b6200034b81848462000304565b505050565b5b8181101562000373576200036760008262000334565b60018101905062000351565b5050565b601f821115620003c2576200038c8162000236565b62000397846200024b565b81016020851015620003a7578190505b620003bf620003b6856200024b565b83018262000350565b50505b505050565b600082821c905092915050565b6000620003e760001984600802620003c7565b1980831691505092915050565b6000620004028383620003d4565b9150826002028217905092915050565b6200041d8262000198565b67ffffffffffffffff811115620004395762000438620001a3565b5b62000445825462000201565b6200045282828562000377565b600060209050601f8311600181146200048a576000841562000475578287015190505b620004818582620003f4565b865550620004f1565b601f1984166200049a8662000236565b60005b82811015620004c4578489015182556001820191506020850194506020810190506200049d565b86831015620004e45784890151620004e0601f891682620003d4565b8355505b6001600288020188555050505b505050505050565b611eeb80620005096000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063a457c2d711610071578063a457c2d7146102d1578063a9059cbb14610301578063dd62ed3e14610331578063f0dda65c14610361578063f2fde38b1461037d57610116565b8063715018a61461026d57806388a8d602146102775780638da5cb5b1461029557806395d89b41146102b357610116565b80631df77caa116100e95780631df77caa146101a357806323b872dd146101bf578063313ce567146101ef578063395093511461020d57806370a082311461023d57610116565b806306fdde031461011b578063095ea7b3146101395780630d1118ce1461016957806318160ddd14610185575b600080fd5b610123610399565b60405161013091906113cc565b60405180910390f35b610153600480360381019061014e9190611487565b61042b565b60405161016091906114e2565b60405180910390f35b610183600480360381019061017e9190611487565b61044e565b005b61018d610537565b60405161019a919061150c565b60405180910390f35b6101bd60048036038101906101b89190611527565b610541565b005b6101d960048036038101906101d49190611554565b6105c6565b6040516101e691906114e2565b60405180910390f35b6101f76105f5565b60405161020491906115c3565b60405180910390f35b61022760048036038101906102229190611487565b6105fe565b60405161023491906114e2565b60405180910390f35b61025760048036038101906102529190611527565b610635565b604051610264919061150c565b60405180910390f35b61027561067d565b005b61027f610691565b60405161028c91906115ed565b60405180910390f35b61029d6106b7565b6040516102aa91906115ed565b60405180910390f35b6102bb6106e1565b6040516102c891906113cc565b60405180910390f35b6102eb60048036038101906102e69190611487565b610773565b6040516102f891906114e2565b60405180910390f35b61031b60048036038101906103169190611487565b6107ea565b60405161032891906114e2565b60405180910390f35b61034b60048036038101906103469190611608565b61080d565b604051610358919061150c565b60405180910390f35b61037b60048036038101906103769190611487565b610894565b005b61039760048036038101906103929190611527565b610975565b005b6060600380546103a890611677565b80601f01602080910402602001604051908101604052809291908181526020018280546103d490611677565b80156104215780601f106103f657610100808354040283529160200191610421565b820191906000526020600020905b81548152906001019060200180831161040457829003601f168201915b5050505050905090565b6000806104366109f8565b9050610443818585610a00565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d5906116f4565b60405180910390fd5b806104e883610635565b1015610529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052090611760565b60405180910390fd5b6105338282610bc9565b5050565b6000600254905090565b610549610d96565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361058257600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806105d16109f8565b90506105de858285610e14565b6105e9858585610ea0565b60019150509392505050565b60006012905090565b6000806106096109f8565b905061062a81858561061b858961080d565b61062591906117af565b610a00565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610685610d96565b61068f6000611116565b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546106f090611677565b80601f016020809104026020016040519081016040528092919081815260200182805461071c90611677565b80156107695780601f1061073e57610100808354040283529160200191610769565b820191906000526020600020905b81548152906001019060200180831161074c57829003601f168201915b5050505050905090565b60008061077e6109f8565b9050600061078c828661080d565b9050838110156107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890611855565b60405180910390fd5b6107de8286868403610a00565b60019250505092915050565b6000806107f56109f8565b9050610802818585610ea0565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091b906116f4565b60405180910390fd5b60008111610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e906118c1565b60405180910390fd5b61097182826111dc565b5050565b61097d610d96565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e390611953565b60405180910390fd5b6109f581611116565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a66906119e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590611a77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bbc919061150c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2f90611b09565b60405180910390fd5b610c4482600083611332565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190611b9b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d7d919061150c565b60405180910390a3610d9183600084611337565b505050565b610d9e6109f8565b73ffffffffffffffffffffffffffffffffffffffff16610dbc6106b7565b73ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990611c07565b60405180910390fd5b565b6000610e20848461080d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e9a5781811015610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8390611c73565b60405180910390fd5b610e998484848403610a00565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0690611d05565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590611d97565b60405180910390fd5b610f89838383611332565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100690611e29565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110fd919061150c565b60405180910390a3611110848484611337565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124290611e95565b60405180910390fd5b61125760008383611332565b806002600082825461126991906117af565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161131a919061150c565b60405180910390a361132e60008383611337565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561137657808201518184015260208101905061135b565b60008484015250505050565b6000601f19601f8301169050919050565b600061139e8261133c565b6113a88185611347565b93506113b8818560208601611358565b6113c181611382565b840191505092915050565b600060208201905081810360008301526113e68184611393565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061141e826113f3565b9050919050565b61142e81611413565b811461143957600080fd5b50565b60008135905061144b81611425565b92915050565b6000819050919050565b61146481611451565b811461146f57600080fd5b50565b6000813590506114818161145b565b92915050565b6000806040838503121561149e5761149d6113ee565b5b60006114ac8582860161143c565b92505060206114bd85828601611472565b9150509250929050565b60008115159050919050565b6114dc816114c7565b82525050565b60006020820190506114f760008301846114d3565b92915050565b61150681611451565b82525050565b600060208201905061152160008301846114fd565b92915050565b60006020828403121561153d5761153c6113ee565b5b600061154b8482850161143c565b91505092915050565b60008060006060848603121561156d5761156c6113ee565b5b600061157b8682870161143c565b935050602061158c8682870161143c565b925050604061159d86828701611472565b9150509250925092565b600060ff82169050919050565b6115bd816115a7565b82525050565b60006020820190506115d860008301846115b4565b92915050565b6115e781611413565b82525050565b600060208201905061160260008301846115de565b92915050565b6000806040838503121561161f5761161e6113ee565b5b600061162d8582860161143c565b925050602061163e8582860161143c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061168f57607f821691505b6020821081036116a2576116a1611648565b5b50919050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b60006116de600c83611347565b91506116e9826116a8565b602082019050919050565b6000602082019050818103600083015261170d816116d1565b9050919050565b7f4e6f7420456e6f75676820746f6b656e7320746f206275726e00000000000000600082015250565b600061174a601983611347565b915061175582611714565b602082019050919050565b600060208201905081810360008301526117798161173d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117ba82611451565b91506117c583611451565b92508282019050808211156117dd576117dc611780565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061183f602583611347565b915061184a826117e3565b604082019050919050565b6000602082019050818103600083015261186e81611832565b9050919050565b7f496e76616c696420546f6b656e204e756d626572000000000000000000000000600082015250565b60006118ab601483611347565b91506118b682611875565b602082019050919050565b600060208201905081810360008301526118da8161189e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061193d602683611347565b9150611948826118e1565b604082019050919050565b6000602082019050818103600083015261196c81611930565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119cf602483611347565b91506119da82611973565b604082019050919050565b600060208201905081810360008301526119fe816119c2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a61602283611347565b9150611a6c82611a05565b604082019050919050565b60006020820190508181036000830152611a9081611a54565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611af3602183611347565b9150611afe82611a97565b604082019050919050565b60006020820190508181036000830152611b2281611ae6565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b85602283611347565b9150611b9082611b29565b604082019050919050565b60006020820190508181036000830152611bb481611b78565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611bf1602083611347565b9150611bfc82611bbb565b602082019050919050565b60006020820190508181036000830152611c2081611be4565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611c5d601d83611347565b9150611c6882611c27565b602082019050919050565b60006020820190508181036000830152611c8c81611c50565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611cef602583611347565b9150611cfa82611c93565b604082019050919050565b60006020820190508181036000830152611d1e81611ce2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d81602383611347565b9150611d8c82611d25565b604082019050919050565b60006020820190508181036000830152611db081611d74565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e13602683611347565b9150611e1e82611db7565b604082019050919050565b60006020820190508181036000830152611e4281611e06565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611e7f601f83611347565b9150611e8a82611e49565b602082019050919050565b60006020820190508181036000830152611eae81611e72565b905091905056fea26469706673582212204c79265006c719f6b9e3d0efb22b45f3d59acb8ceeea5cb0afc9adc8ceed3bdf64736f6c63430008110033