0x60806040523480156200001157600080fd5b50604051620020bc380380620020bc8339818101604052810190620000379190620001bb565b60008110156200007e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000759062000289565b60405180910390fd5b62278d00811115620000c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000be9062000321565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550505062000343565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000148826200011b565b9050919050565b6200015a816200013b565b81146200016657600080fd5b50565b6000815190506200017a816200014f565b92915050565b6000819050919050565b620001958162000180565b8114620001a157600080fd5b50565b600081519050620001b5816200018a565b92915050565b60008060408385031215620001d557620001d462000116565b5b6000620001e58582860162000169565b9250506020620001f885828601620001a4565b9150509250929050565b600082825260208201905092915050565b7f54696d656c6f636b3a3a636f6e7374727563746f723a2044656c6179206d757360008201527f7420657863656564206d696e696d756d2064656c61792e000000000000000000602082015250565b60006200027160378362000202565b91506200027e8262000213565b604082019050919050565b60006020820190508181036000830152620002a48162000262565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60008201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000602082015250565b60006200030960388362000202565b91506200031682620002ab565b604082019050919050565b600060208201905081810360008301526200033c81620002fa565b9050919050565b611d6980620003536000396000f3fe6080604052600436106100c65760003560e01c80636a42b8f81161007f578063c1a287e211610059578063c1a287e21461024b578063e177246e14610276578063f2b065371461029f578063f851a440146102dc576100c7565b80636a42b8f8146101ca5780637d645fab146101f5578063b1b43ae514610220576100c7565b80630825f38f146100c95780630e18b681146100f957806326782247146101105780633a66f9011461013b5780634dd18bf514610178578063591fcdfe146101a1576100c7565b5b005b6100e360048036038101906100de919061107b565b610307565b6040516100f091906111ad565b60405180910390f35b34801561010557600080fd5b5061010e610653565b005b34801561011c57600080fd5b506101256107ca565b60405161013291906111de565b60405180910390f35b34801561014757600080fd5b50610162600480360381019061015d919061107b565b6107f0565b60405161016f9190611212565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a919061122d565b6109a0565b005b3480156101ad57600080fd5b506101c860048036038101906101c3919061107b565b610ab7565b005b3480156101d657600080fd5b506101df610c01565b6040516101ec9190611269565b60405180910390f35b34801561020157600080fd5b5061020a610c07565b6040516102179190611269565b60405180910390f35b34801561022c57600080fd5b50610235610c0e565b6040516102429190611269565b60405180910390f35b34801561025757600080fd5b50610260610c13565b60405161026d9190611269565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190611284565b610c1a565b005b3480156102ab57600080fd5b506102c660048036038101906102c191906112dd565b610d4b565b6040516102d39190611325565b60405180910390f35b3480156102e857600080fd5b506102f1610d6b565b6040516102fe91906111de565b60405180910390f35b606060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038e906113c3565b60405180910390fd5b600086868686866040516020016103b2959493929190611427565b6040516020818303038152906040528051906020012090506003600082815260200190815260200160002060009054906101000a900460ff1661042a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610421906114fa565b60405180910390fd5b82610433610d8f565b1015610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046b906115b2565b60405180910390fd5b61048a62093a8084610d9790919063ffffffff16565b610492610d8f565b11156104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca90611644565b60405180910390fd5b60006003600083815260200190815260200160002060006101000a81548160ff021916908315150217905550606060008651036105125784905061053e565b85805190602001208560405160200161052c9291906116ed565b60405160208183030381529060405290505b6000808973ffffffffffffffffffffffffffffffffffffffff1689846040516105679190611715565b60006040518083038185875af1925050503d80600081146105a4576040519150601f19603f3d011682016040523d82523d6000602084013e6105a9565b606091505b5091509150816105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e59061179e565b60405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff16847fa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e78b8b8b8b60405161063b94939291906117be565b60405180910390a38094505050505095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106da90611883565b60405180910390fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60405160405180910390a2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087890611915565b60405180910390fd5b61089d60025461088f610d8f565b610d9790919063ffffffff16565b8210156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6906119cd565b60405180910390fd5b600086868686866040516020016108fa959493929190611427565b60405160208183030381529060405280519060200120905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff16817f76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f8888888860405161098b94939291906117be565b60405180910390a38091505095945050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590611a5f565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a75660405160405180910390a250565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90611af1565b60405180910390fd5b60008585858585604051602001610b60959493929190611427565b60405160208183030381529060405280519060200120905060006003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508573ffffffffffffffffffffffffffffffffffffffff16817f2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf8787878787604051610bf194939291906117be565b60405180910390a3505050505050565b60025481565b62278d0081565b600081565b62093a8081565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f90611b83565b60405180910390fd5b6000811015610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc390611c15565b60405180910390fd5b62278d00811115610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990611ca7565b60405180910390fd5b806002819055506002547f948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c60405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600042905090565b600080828401905083811015610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990611d13565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e2b82610e00565b9050919050565b610e3b81610e20565b8114610e4657600080fd5b50565b600081359050610e5881610e32565b92915050565b6000819050919050565b610e7181610e5e565b8114610e7c57600080fd5b50565b600081359050610e8e81610e68565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ee782610e9e565b810181811067ffffffffffffffff82111715610f0657610f05610eaf565b5b80604052505050565b6000610f19610dec565b9050610f258282610ede565b919050565b600067ffffffffffffffff821115610f4557610f44610eaf565b5b610f4e82610e9e565b9050602081019050919050565b82818337600083830152505050565b6000610f7d610f7884610f2a565b610f0f565b905082815260208101848484011115610f9957610f98610e99565b5b610fa4848285610f5b565b509392505050565b600082601f830112610fc157610fc0610e94565b5b8135610fd1848260208601610f6a565b91505092915050565b600067ffffffffffffffff821115610ff557610ff4610eaf565b5b610ffe82610e9e565b9050602081019050919050565b600061101e61101984610fda565b610f0f565b90508281526020810184848401111561103a57611039610e99565b5b611045848285610f5b565b509392505050565b600082601f83011261106257611061610e94565b5b813561107284826020860161100b565b91505092915050565b600080600080600060a0868803121561109757611096610df6565b5b60006110a588828901610e49565b95505060206110b688828901610e7f565b945050604086013567ffffffffffffffff8111156110d7576110d6610dfb565b5b6110e388828901610fac565b935050606086013567ffffffffffffffff81111561110457611103610dfb565b5b6111108882890161104d565b925050608061112188828901610e7f565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b8381101561116857808201518184015260208101905061114d565b60008484015250505050565b600061117f8261112e565b6111898185611139565b935061119981856020860161114a565b6111a281610e9e565b840191505092915050565b600060208201905081810360008301526111c78184611174565b905092915050565b6111d881610e20565b82525050565b60006020820190506111f360008301846111cf565b92915050565b6000819050919050565b61120c816111f9565b82525050565b60006020820190506112276000830184611203565b92915050565b60006020828403121561124357611242610df6565b5b600061125184828501610e49565b91505092915050565b61126381610e5e565b82525050565b600060208201905061127e600083018461125a565b92915050565b60006020828403121561129a57611299610df6565b5b60006112a884828501610e7f565b91505092915050565b6112ba816111f9565b81146112c557600080fd5b50565b6000813590506112d7816112b1565b92915050565b6000602082840312156112f3576112f2610df6565b5b6000611301848285016112c8565b91505092915050565b60008115159050919050565b61131f8161130a565b82525050565b600060208201905061133a6000830184611316565b92915050565b600082825260208201905092915050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20436160008201527f6c6c206d75737420636f6d652066726f6d2061646d696e2e0000000000000000602082015250565b60006113ad603883611340565b91506113b882611351565b604082019050919050565b600060208201905081810360008301526113dc816113a0565b9050919050565b600081519050919050565b60006113f9826113e3565b6114038185611340565b935061141381856020860161114a565b61141c81610e9e565b840191505092915050565b600060a08201905061143c60008301886111cf565b611449602083018761125a565b818103604083015261145b81866113ee565b9050818103606083015261146f8185611174565b905061147e608083018461125a565b9695505050505050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206861736e2774206265656e207175657565642e000000602082015250565b60006114e4603d83611340565b91506114ef82611488565b604082019050919050565b60006020820190508181036000830152611513816114d7565b9050919050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206861736e2774207375727061737365642074696d652060208201527f6c6f636b2e000000000000000000000000000000000000000000000000000000604082015250565b600061159c604583611340565b91506115a78261151a565b606082019050919050565b600060208201905081810360008301526115cb8161158f565b9050919050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e206973207374616c652e00000000000000000000000000602082015250565b600061162e603383611340565b9150611639826115d2565b604082019050919050565b6000602082019050818103600083015261165d81611621565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b6116ab6116a682611664565b611690565b82525050565b600081905092915050565b60006116c78261112e565b6116d181856116b1565b93506116e181856020860161114a565b80840191505092915050565b60006116f9828561169a565b60048201915061170982846116bc565b91508190509392505050565b600061172182846116bc565b915081905092915050565b7f54696d656c6f636b3a3a657865637574655472616e73616374696f6e3a20547260008201527f616e73616374696f6e20657865637574696f6e2072657665727465642e000000602082015250565b6000611788603d83611340565b91506117938261172c565b604082019050919050565b600060208201905081810360008301526117b78161177b565b9050919050565b60006080820190506117d3600083018761125a565b81810360208301526117e581866113ee565b905081810360408301526117f98185611174565b9050611808606083018461125a565b95945050505050565b7f54696d656c6f636b3a3a61636365707441646d696e3a2043616c6c206d75737460008201527f20636f6d652066726f6d2070656e64696e6741646d696e2e0000000000000000602082015250565b600061186d603883611340565b915061187882611811565b604082019050919050565b6000602082019050818103600083015261189c81611860565b9050919050565b7f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a2043616c6c60008201527f206d75737420636f6d652066726f6d2061646d696e2e00000000000000000000602082015250565b60006118ff603683611340565b915061190a826118a3565b604082019050919050565b6000602082019050818103600083015261192e816118f2565b9050919050565b7f54696d656c6f636b3a3a71756575655472616e73616374696f6e3a204573746960008201527f6d6174656420657865637574696f6e20626c6f636b206d75737420736174697360208201527f66792064656c61792e0000000000000000000000000000000000000000000000604082015250565b60006119b7604983611340565b91506119c282611935565b606082019050919050565b600060208201905081810360008301526119e6816119aa565b9050919050565b7f54696d656c6f636b3a3a73657450656e64696e6741646d696e3a2043616c6c2060008201527f6d75737420636f6d652066726f6d2054696d656c6f636b2e0000000000000000602082015250565b6000611a49603883611340565b9150611a54826119ed565b604082019050919050565b60006020820190508181036000830152611a7881611a3c565b9050919050565b7f54696d656c6f636b3a3a63616e63656c5472616e73616374696f6e3a2043616c60008201527f6c206d75737420636f6d652066726f6d2061646d696e2e000000000000000000602082015250565b6000611adb603783611340565b9150611ae682611a7f565b604082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2043616c6c206d75737420636f60008201527f6d652066726f6d2054696d656c6f636b2e000000000000000000000000000000602082015250565b6000611b6d603183611340565b9150611b7882611b11565b604082019050919050565b60006020820190508181036000830152611b9c81611b60565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206560008201527f7863656564206d696e696d756d2064656c61792e000000000000000000000000602082015250565b6000611bff603483611340565b9150611c0a82611ba3565b604082019050919050565b60006020820190508181036000830152611c2e81611bf2565b9050919050565b7f54696d656c6f636b3a3a73657444656c61793a2044656c6179206d757374206e60008201527f6f7420657863656564206d6178696d756d2064656c61792e0000000000000000602082015250565b6000611c91603883611340565b9150611c9c82611c35565b604082019050919050565b60006020820190508181036000830152611cc081611c84565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611cfd601b83611340565b9150611d0882611cc7565b602082019050919050565b60006020820190508181036000830152611d2c81611cf0565b905091905056fea26469706673582212209f1802b8267c963ba8e030ede80d3716f70b94f824a0a650717d163df74e107864736f6c634300081800330000000000000000000000005381c27c53fdd3ab2ed80fb45b7974de3bd07977000000000000000000000000000000000000000000000000000000000002a300