60806040525f60055f6101000a81548160ff02191690831515021790555034801562000029575f80fd5b506040518060400160405280600781526020017f416c7068617264000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f414c5048440000000000000000000000000000000000000000000000000000008152508181620000b8620000ac6200012f60201b60201c565b6200013660201b60201c565b8160069081620000c9919062000614565b508060079081620000db919062000614565b505050505060016008819055506200012933620000fd620001f760201b60201c565b600a6200010b919062000881565b64e8d4a510006200011d9190620008d1565b620001ff60201b60201c565b620009ff565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002679062000979565b60405180910390fd5b620002835f8383620003a660201b60201c565b630f3eae65640997e6e50902673398bc1d25f112ed64085774394d0202805f52600160205260405f20720fffffffffffffffffffffffffffffffffffff815550508060045f828254620002d7919062000999565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003879190620009e4565b60405180910390a3620003a25f8383620003ab60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200042c57607f821691505b602082108103620004425762000441620003e7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000469565b620004b2868362000469565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004fc620004f6620004f084620004ca565b620004d3565b620004ca565b9050919050565b5f819050919050565b6200051783620004dc565b6200052f620005268262000503565b84845462000475565b825550505050565b5f90565b6200054562000537565b620005528184846200050c565b505050565b5b8181101562000579576200056d5f826200053b565b60018101905062000558565b5050565b601f821115620005c857620005928162000448565b6200059d846200045a565b81016020851015620005ad578190505b620005c5620005bc856200045a565b83018262000557565b50505b505050565b5f82821c905092915050565b5f620005ea5f1984600802620005cd565b1980831691505092915050565b5f620006048383620005d9565b9150826002028217905092915050565b6200061f82620003b0565b67ffffffffffffffff8111156200063b576200063a620003ba565b5b62000647825462000414565b620006548282856200057d565b5f60209050601f8311600181146200068a575f841562000675578287015190505b620006818582620005f7565b865550620006f0565b601f1984166200069a8662000448565b5f5b82811015620006c3578489015182556001820191506020850194506020810190506200069c565b86831015620006e35784890151620006df601f891682620005d9565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000782578086048111156200075a5762000759620006f8565b5b60018516156200076a5780820291505b80810290506200077a8562000725565b94506200073a565b94509492505050565b5f826200079c57600190506200086e565b81620007ab575f90506200086e565b8160018114620007c45760028114620007cf5762000805565b60019150506200086e565b60ff841115620007e457620007e3620006f8565b5b8360020a915084821115620007fe57620007fd620006f8565b5b506200086e565b5060208310610133831016604e8410600b84101617156200083f5782820a905083811115620008395762000838620006f8565b5b6200086e565b6200084e848484600162000731565b92509050818404811115620008685762000867620006f8565b5b81810290505b9392505050565b5f60ff82169050919050565b5f6200088d82620004ca565b91506200089a8362000875565b9250620008c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200078b565b905092915050565b5f620008dd82620004ca565b9150620008ea83620004ca565b9250828202620008fa81620004ca565b91508282048414831517620009145762000913620006f8565b5b5092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000961601f836200091b565b91506200096e826200092b565b602082019050919050565b5f6020820190508181035f830152620009928162000953565b9050919050565b5f620009a582620004ca565b9150620009b283620004ca565b9250828201905080821115620009cd57620009cc620006f8565b5b92915050565b620009de81620004ca565b82525050565b5f602082019050620009f95f830184620009d3565b92915050565b611c9e8062000a0d5f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c80637111a994116100ab578063a9059cbb1161006f578063a9059cbb14610307578063beabacc814610337578063dd62ed3e14610353578063f2fde38b14610383578063f6ee6ba81461039f5761011f565b80637111a99414610275578063715018a6146102915780638da5cb5b1461029b57806395d89b41146102b9578063a457c2d7146102d75761011f565b806323b872dd116100f257806323b872dd146101ab578063313ce567146101db57806339509351146101f9578063477e19441461022957806370a08231146102455761011f565b806306fdde0314610123578063095ea7b31461014157806318160ddd1461017157806320ea14e71461018f575b5f80fd5b61012b6103cf565b6040516101389190611230565b60405180910390f35b61015b600480360381019061015691906112e5565b61045f565b604051610168919061133d565b60405180910390f35b610179610481565b6040516101869190611365565b60405180910390f35b6101a960048036038101906101a491906113df565b61048a565b005b6101c560048036038101906101c0919061142a565b610533565b6040516101d2919061133d565b60405180910390f35b6101e3610561565b6040516101f09190611495565b60405180910390f35b610213600480360381019061020e91906112e5565b610569565b604051610220919061133d565b60405180910390f35b610243600480360381019061023e91906113df565b61059f565b005b61025f600480360381019061025a91906114ae565b610647565b60405161026c9190611365565b60405180910390f35b61028f600480360381019061028a919061152e565b61068d565b005b610299610782565b005b6102a3610795565b6040516102b091906115ed565b60405180910390f35b6102c16107bc565b6040516102ce9190611230565b60405180910390f35b6102f160048036038101906102ec91906112e5565b61084c565b6040516102fe919061133d565b60405180910390f35b610321600480360381019061031c91906112e5565b6108c1565b60405161032e919061133d565b60405180910390f35b610351600480360381019061034c919061142a565b6108e3565b005b61036d60048036038101906103689190611606565b61094d565b60405161037a9190611365565b60405180910390f35b61039d600480360381019061039891906114ae565b6109cf565b005b6103b960048036038101906103b491906114ae565b610a51565b6040516103c6919061133d565b60405180910390f35b6060600680546103de90611671565b80601f016020809104026020016040519081016040528092919081815260200182805461040a90611671565b80156104555780601f1061042c57610100808354040283529160200191610455565b820191905f5260205f20905b81548152906001019060200180831161043857829003601f168201915b5050505050905090565b5f80610469610aa3565b9050610476818585610aaa565b600191505092915050565b5f600454905090565b610492610c6d565b5f5b8282905081101561052e57600160025f8585858181106104b7576104b66116a1565b5b90506020020160208101906104cc91906114ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610526906116fb565b915050610494565b505050565b5f8061053d610aa3565b905061054a858285610ceb565b610555858585610d76565b60019150509392505050565b5f6012905090565b5f80610573610aa3565b9050610594818585610585858961094d565b61058f9190611742565b610aaa565b600191505092915050565b6105a7610c6d565b5f5b82829050811015610642575f60025f8585858181106105cb576105ca6116a1565b5b90506020020160208101906105e091906114ae565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061063a906116fb565b9150506105a9565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5b86869050811015610779578484828181106106ad576106ac6116a1565b5b90506020020160208101906106c291906114ae565b73ffffffffffffffffffffffffffffffffffffffff168787838181106106eb576106ea6116a1565b5b905060200201602081019061070091906114ae565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061074a576107496116a1565b5b9050602002013560405161075e9190611365565b60405180910390a38080610771906116fb565b91505061068f565b50505050505050565b61078a610c6d565b6107935f6110db565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546107cb90611671565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790611671565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b5050505050905090565b5f80610856610aa3565b90505f610863828661094d565b9050838110156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f906117e5565b60405180910390fd5b6108b58286868403610aaa565b60019250505092915050565b5f806108cb610aa3565b90506108d8818585610d76565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109409190611365565b60405180910390a3505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6109d7610c6d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3c90611873565b60405180910390fd5b610a4e816110db565b50565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f90611901565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d9061198f565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c609190611365565b60405180910390a3505050565b610c75610aa3565b73ffffffffffffffffffffffffffffffffffffffff16610c93610795565b73ffffffffffffffffffffffffffffffffffffffff1614610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce0906119f7565b60405180910390fd5b565b5f610cf6848461094d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d705781811015610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990611a5f565b60405180910390fd5b610d6f8484848403610aaa565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddb90611aed565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4990611b7b565b60405180910390fd5b610e5d83838361119c565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890611c09565b60405180910390fd5b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680610f7c575060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15610fd7576001151560055f9054906101000a900460ff16151514610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90611c4a565b60405180910390fd5b5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110c29190611365565b60405180910390a36110d58484846111a1565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156111dd5780820151818401526020810190506111c2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611202826111a6565b61120c81856111b0565b935061121c8185602086016111c0565b611225816111e8565b840191505092915050565b5f6020820190508181035f83015261124881846111f8565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61128182611258565b9050919050565b61129181611277565b811461129b575f80fd5b50565b5f813590506112ac81611288565b92915050565b5f819050919050565b6112c4816112b2565b81146112ce575f80fd5b50565b5f813590506112df816112bb565b92915050565b5f80604083850312156112fb576112fa611250565b5b5f6113088582860161129e565b9250506020611319858286016112d1565b9150509250929050565b5f8115159050919050565b61133781611323565b82525050565b5f6020820190506113505f83018461132e565b92915050565b61135f816112b2565b82525050565b5f6020820190506113785f830184611356565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261139f5761139e61137e565b5b8235905067ffffffffffffffff8111156113bc576113bb611382565b5b6020830191508360208202830111156113d8576113d7611386565b5b9250929050565b5f80602083850312156113f5576113f4611250565b5b5f83013567ffffffffffffffff81111561141257611411611254565b5b61141e8582860161138a565b92509250509250929050565b5f805f6060848603121561144157611440611250565b5b5f61144e8682870161129e565b935050602061145f8682870161129e565b9250506040611470868287016112d1565b9150509250925092565b5f60ff82169050919050565b61148f8161147a565b82525050565b5f6020820190506114a85f830184611486565b92915050565b5f602082840312156114c3576114c2611250565b5b5f6114d08482850161129e565b91505092915050565b5f8083601f8401126114ee576114ed61137e565b5b8235905067ffffffffffffffff81111561150b5761150a611382565b5b60208301915083602082028301111561152757611526611386565b5b9250929050565b5f805f805f806060878903121561154857611547611250565b5b5f87013567ffffffffffffffff81111561156557611564611254565b5b61157189828a0161138a565b9650965050602087013567ffffffffffffffff81111561159457611593611254565b5b6115a089828a0161138a565b9450945050604087013567ffffffffffffffff8111156115c3576115c2611254565b5b6115cf89828a016114d9565b92509250509295509295509295565b6115e781611277565b82525050565b5f6020820190506116005f8301846115de565b92915050565b5f806040838503121561161c5761161b611250565b5b5f6116298582860161129e565b925050602061163a8582860161129e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061168857607f821691505b60208210810361169b5761169a611644565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611705826112b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611737576117366116ce565b5b600182019050919050565b5f61174c826112b2565b9150611757836112b2565b925082820190508082111561176f5761176e6116ce565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6117cf6025836111b0565b91506117da82611775565b604082019050919050565b5f6020820190508181035f8301526117fc816117c3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61185d6026836111b0565b915061186882611803565b604082019050919050565b5f6020820190508181035f83015261188a81611851565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6118eb6024836111b0565b91506118f682611891565b604082019050919050565b5f6020820190508181035f830152611918816118df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6119796022836111b0565b91506119848261191f565b604082019050919050565b5f6020820190508181035f8301526119a68161196d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6119e16020836111b0565b91506119ec826119ad565b602082019050919050565b5f6020820190508181035f830152611a0e816119d5565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611a49601d836111b0565b9150611a5482611a15565b602082019050919050565b5f6020820190508181035f830152611a7681611a3d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611ad76025836111b0565b9150611ae282611a7d565b604082019050919050565b5f6020820190508181035f830152611b0481611acb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611b656023836111b0565b9150611b7082611b0b565b604082019050919050565b5f6020820190508181035f830152611b9281611b59565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611bf36026836111b0565b9150611bfe82611b99565b604082019050919050565b5f6020820190508181035f830152611c2081611be7565b9050919050565b50565b5f611c355f836111b0565b9150611c4082611c27565b5f82019050919050565b5f6020820190508181035f830152611c6181611c2a565b905091905056fea2646970667358221220f2943ff9a46b90c58a1eeeeb499b1c625fb3b38d16dec2db25466e2ddab60b4b64736f6c63430008140033