60806040526032600555601e6006556014600755600a6008556003600d556003600e55600a600f55348015610032575f80fd5b50604051616c53380380616c538339818101604052810190610054919061181c565b6040518060400160405280600981526020017f42617365204c75636b00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c55434b0000000000000000000000000000000000000000000000000000000081525081600390816100cf9190611aa6565b5080600490816100df9190611aa6565b5050505f6100f16104e860201b60201c565b600a6100fd9190611cdd565b6305f5e10061010c9190611d27565b90505f606460148361011e9190611d27565b6101289190611d95565b90505f606460508461013a9190611d27565b6101449190611d95565b90503360125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160095f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506102e260125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168587896104f060201b60201c565b61031360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836107ca60201b60201c565b61032384826107ca60201b60201c565b8560105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103f28661084f60201b60201c565b3373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161044f9190611dd4565b60405180910390a360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104d59190611dd4565b60405180910390a3505050505050612106565b5f6012905090565b6001600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b82908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b84908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361083a575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108319190611dfc565b60405180910390fd5b61084b5f838361090660201b60201c565b5050565b61087c734556dac5f4f4205e6f9db7a37120dcb1e652bbed680ad78ebc5ac6200000610b1f60201b60201c565b506108aa73c7771b864f434e8a3e0cabc7d7e683acb25ee0da681b1ae4d6e2ef500000610b1f60201b60201c565b506108d8733cb80b9c7b0809791fad84cbc9db632027444e14681043561a8829300000610b1f60201b60201c565b506108e9603261113b60201b60201c565b61090281683635c9adc5dea00000610b1f60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610956578060025f82825461094a9190611e15565b92505081905550610a24565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156109df578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016109d693929190611e48565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a6b578060025f8282540392505081905550610ab5565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b129190611dd4565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8590611ed7565b60405180910390fd5b8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0590611f3f565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cb5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610d0c575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610d63575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610e9c578160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610db49190611f5d565b925050819055508160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e079190611e15565b92505081905550610e1d8361125c60201b60201c565b610e2e3384846113ad60201b60201c565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e8b9190611dd4565b60405180910390a360019050611135565b5f6064600e5484610ead9190611d27565b610eb79190611d95565b90505f8184610ec69190611f5d565b90508360095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610f149190611f5d565b925050819055508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610f679190611e15565b925050819055508160095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fdb9190611e15565b92505081905550610ff18561125c60201b60201c565b611000336114a360201b60201c565b6110323360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113ad60201b60201c565b6110433386836113ad60201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110a09190611dd4565b60405180910390a360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5d37fd68fe66745a199f8c603e00ae02183f4aabb8ec0089589b0b40c4ead5e1846040516111269190611dd4565b60405180910390a36001925050505b92915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c190612000565b60405180910390fd5b600181101580156111dc575060648111155b61121b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112129061208e565b60405180910390fd5b806008819055507fe61db5f154fe1c4c549dc2557e8c4981d953f387285fe995036b437bb41dff15816040516112519190611dd4565b60405180910390a150565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112ef57505f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b156113aa576001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141d575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114149190611dfc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361148d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114849190611dfc565b60405180910390fd5b61149e83838361090660201b60201c565b505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541480156115355750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561158e575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156115e7575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156117bb575f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b600b805490508110156117b9578173ffffffffffffffffffffffffffffffffffffffff16600b828154811061167a576116796120ac565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117ac57600b6001600b805490506116d19190611f5d565b815481106116e2576116e16120ac565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b828154811061171e5761171d6120ac565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b805480611775576117746120d9565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556117b9565b8080600101915050611642565b505b50565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117eb826117c2565b9050919050565b6117fb816117e1565b8114611805575f80fd5b50565b5f81519050611816816117f2565b92915050565b5f805f60608486031215611833576118326117be565b5b5f61184086828701611808565b935050602061185186828701611808565b925050604061186286828701611808565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806118e757607f821691505b6020821081036118fa576118f96118a3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261195c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611921565b6119668683611921565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6119aa6119a56119a08461197e565b611987565b61197e565b9050919050565b5f819050919050565b6119c383611990565b6119d76119cf826119b1565b84845461192d565b825550505050565b5f90565b6119eb6119df565b6119f68184846119ba565b505050565b5b81811015611a1957611a0e5f826119e3565b6001810190506119fc565b5050565b601f821115611a5e57611a2f81611900565b611a3884611912565b81016020851015611a47578190505b611a5b611a5385611912565b8301826119fb565b50505b505050565b5f82821c905092915050565b5f611a7e5f1984600802611a63565b1980831691505092915050565b5f611a968383611a6f565b9150826002028217905092915050565b611aaf8261186c565b67ffffffffffffffff811115611ac857611ac7611876565b5b611ad282546118d0565b611add828285611a1d565b5f60209050601f831160018114611b0e575f8415611afc578287015190505b611b068582611a8b565b865550611b6d565b601f198416611b1c86611900565b5f5b82811015611b4357848901518255600182019150602085019450602081019050611b1e565b86831015611b605784890151611b5c601f891682611a6f565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611bf757808604811115611bd357611bd2611b75565b5b6001851615611be25780820291505b8081029050611bf085611ba2565b9450611bb7565b94509492505050565b5f82611c0f5760019050611cca565b81611c1c575f9050611cca565b8160018114611c325760028114611c3c57611c6b565b6001915050611cca565b60ff841115611c4e57611c4d611b75565b5b8360020a915084821115611c6557611c64611b75565b5b50611cca565b5060208310610133831016604e8410600b8410161715611ca05782820a905083811115611c9b57611c9a611b75565b5b611cca565b611cad8484846001611bae565b92509050818404811115611cc457611cc3611b75565b5b81810290505b9392505050565b5f60ff82169050919050565b5f611ce78261197e565b9150611cf283611cd1565b9250611d1f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611c00565b905092915050565b5f611d318261197e565b9150611d3c8361197e565b9250828202611d4a8161197e565b91508282048414831517611d6157611d60611b75565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611d9f8261197e565b9150611daa8361197e565b925082611dba57611db9611d68565b5b828204905092915050565b611dce8161197e565b82525050565b5f602082019050611de75f830184611dc5565b92915050565b611df6816117e1565b82525050565b5f602082019050611e0f5f830184611ded565b92915050565b5f611e1f8261197e565b9150611e2a8361197e565b9250828201905080821115611e4257611e41611b75565b5b92915050565b5f606082019050611e5b5f830186611ded565b611e686020830185611dc5565b611e756040830184611dc5565b949350505050565b5f82825260208201905092915050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f611ec1600f83611e7d565b9150611ecc82611e8d565b602082019050919050565b5f6020820190508181035f830152611eee81611eb5565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f611f29601483611e7d565b9150611f3482611ef5565b602082019050919050565b5f6020820190508181035f830152611f5681611f1d565b9050919050565b5f611f678261197e565b9150611f728361197e565b9250828203905081811115611f8a57611f89611b75565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f611fea602183611e7d565b9150611ff582611f90565b604082019050919050565b5f6020820190508181035f83015261201781611fde565b9050919050565b7f50657263656e74616765206d757374206265206265747765656e203120616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f612078602483611e7d565b91506120838261201e565b604082019050919050565b5f6020820190508181035f8301526120a58161206c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b614b40806121135f395ff3fe608060405234801561000f575f80fd5b5060043610610156575f3560e01c806370a08231116100c1578063a9059cbb1161007a578063a9059cbb1461039c578063d6117ed1146103cc578063dc1052e2146103e8578063dd62ed3e14610404578063ed12e8ef14610434578063f2fde38b1461045257610156565b806370a08231146102ee578063715018a61461031e57806379cc6790146103285780638cd09d50146103445780638da5cb5b1461036057806395d89b411461037e57610156565b806327e235e31161011357806327e235e31461022e578063313ce5671461025e5780633446e4b41461027c57806342966c681461029857806348219945146102b457806355b6ed5c146102be57610156565b806306fdde031461015a578063095ea7b31461017857806318160ddd146101a857806318cf08a2146101c6578063227aa277146101e257806323b872dd146101fe575b5f80fd5b61016261046e565b60405161016f9190613a0d565b60405180910390f35b610192600480360381019061018d9190613abe565b6104fe565b60405161019f9190613b16565b60405180910390f35b6101b0610520565b6040516101bd9190613b3e565b60405180910390f35b6101e060048036038101906101db9190613b57565b610529565b005b6101fc60048036038101906101f79190613b82565b61068a565b005b61021860048036038101906102139190613bd2565b61078c565b6040516102259190613b16565b60405180910390f35b61024860048036038101906102439190613b57565b610f5c565b6040516102559190613b3e565b60405180910390f35b610266610f71565b6040516102739190613c3d565b60405180910390f35b61029660048036038101906102919190613c56565b610f79565b005b6102b260048036038101906102ad9190613c56565b611049565b005b6102bc61105d565b005b6102d860048036038101906102d39190613c81565b6112bc565b6040516102e59190613b3e565b60405180910390f35b61030860048036038101906103039190613b57565b6112dc565b6040516103159190613b3e565b60405180910390f35b610326611321565b005b610342600480360381019061033d9190613abe565b61146d565b005b61035e60048036038101906103599190613c56565b61148d565b005b6103686115ae565b6040516103759190613cce565b60405180910390f35b6103866115d3565b6040516103939190613a0d565b60405180910390f35b6103b660048036038101906103b19190613abe565b611663565b6040516103c39190613b16565b60405180910390f35b6103e660048036038101906103e19190613c56565b611c5b565b005b61040260048036038101906103fd9190613c56565b611d7c565b005b61041e60048036038101906104199190613c81565b611e9d565b60405161042b9190613b3e565b60405180910390f35b61043c611f1f565b6040516104499190613b3e565b60405180910390f35b61046c60048036038101906104679190613b57565b611f4f565b005b60606003805461047d90613d14565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990613d14565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050905090565b5f8061050861210a565b9050610515818585612111565b600191505092915050565b5f600254905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105af90613db4565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063e90613e42565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071090613db4565b60405180910390fd5b60648183856107289190613e8d565b6107329190613e8d565b14610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990613f0a565b60405180910390fd5b826005819055508160068190555080600781905550505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f290613f72565b60405180910390fd5b8160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290613fda565b60405180910390fd5b81600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90614042565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806109dd575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80610a34575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80610a8b575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15610c46578160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610adc9190614060565b925050819055508160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b2f9190613e8d565b9250508190555081600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bbd9190614060565b92505081905550610bcd83612123565b610bd8848484612274565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c359190613b3e565b60405180910390a360019050610f55565b5f6064600d5484610c579190614093565b610c619190614101565b90505f8184610c709190614060565b90508360095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610cbe9190614060565b925050819055508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d119190613e8d565b925050819055508160095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d859190613e8d565b9250508190555083600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e139190614060565b92505081905550610e2385612123565b610e2c86612364565b610e588660105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612274565b610e63868683612274565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ec09190613b3e565b60405180910390a360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f5d37fd68fe66745a199f8c603e00ae02183f4aabb8ec0089589b0b40c4ead5e184604051610f469190613b3e565b60405180910390a36001925050505b9392505050565b6009602052805f5260405f205f915090505481565b5f6012905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90613db4565b60405180910390fd5b80600f819055507fee091bcfa3ce1f1aa8c13cad30c1bd18750c3345aebab4ad12dd7316b0fa8b488160405161103e9190613b3e565b60405180910390a150565b61105a61105461210a565b8261267f565b50565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611104575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113a906141a1565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c05f604051611189919061424b565b60405180910390a25f61119a6126fe565b90503373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c05f6040516111e291906142c1565b60405180910390a25f805f6111f684612d67565b9250925092503373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c05f604051611242919061435d565b60405180910390a25f805f8061125c8751875187516133c8565b93509350935093503373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c05f6040516112aa91906143d3565b60405180910390a25050505050505050565b600a602052815f5260405f20602052805f5260405f205f91509150505481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a790613db4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61147f8261147961210a565b836134e0565b611489828261267f565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151390613db4565b60405180910390fd5b6001811015801561152e575060648111155b61156d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115649061446f565b60405180910390fd5b80600e819055507fa6255338a5f732d64ceba7f4c18182567f9d1067eb984b46d478b37d72a52d11816040516115a39190613b3e565b60405180910390a150565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115e290613d14565b80601f016020809104026020016040519081016040528092919081815260200182805461160e90613d14565b80156116595780601f1061163057610100808354040283529160200191611659565b820191905f5260205f20905b81548152906001019060200180831161163c57829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c990613f72565b60405180910390fd5b8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990613fda565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117f9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611850575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806118a7575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156119d4578160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118f89190614060565b925050819055508160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461194b9190613e8d565b9250508190555061195b83612123565b611966338484612274565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119c39190613b3e565b60405180910390a360019050611c55565b5f6064600e54846119e59190614093565b6119ef9190614101565b90505f81846119fe9190614060565b90508360095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a4c9190614060565b925050819055508060095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a9f9190613e8d565b925050819055508160095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b139190613e8d565b92505081905550611b2385612123565b611b2c33612364565b611b583360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612274565b611b63338683612274565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bc09190613b3e565b60405180910390a360105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5d37fd68fe66745a199f8c603e00ae02183f4aabb8ec0089589b0b40c4ead5e184604051611c469190613b3e565b60405180910390a36001925050505b92915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce190613db4565b60405180910390fd5b60018110158015611cfc575060648111155b611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d329061446f565b60405180910390fd5b806008819055507fe61db5f154fe1c4c549dc2557e8c4981d953f387285fe995036b437bb41dff1581604051611d719190613b3e565b60405180910390a150565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0290613db4565b60405180910390fd5b60018110158015611e1d575060648111155b611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e539061446f565b60405180910390fd5b80600d819055507f7a758dc8e99047b028278b3e2ff1416d8493a7aacee7a5dc30b6bf93270eccce81604051611e929190613b3e565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f611f4a60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112dc565b905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd590613db4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361204c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612043906144fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b61211e8383836001613572565b505050565b600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156121b657505f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054115b15612271576001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122e4575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016122db9190613cce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612354575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161234b9190613cce565b60405180910390fd5b61235f838383613741565b505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541480156123f65750600c5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561244f575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156124a8575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561267c575f600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f5b600b8054905081101561267a578173ffffffffffffffffffffffffffffffffffffffff16600b828154811061253b5761253a61451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361266d57600b6001600b805490506125929190614060565b815481106125a3576125a261451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b82815481106125df576125de61451b565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b80548061263657612635614548565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561267a565b8080600101915050612503565b505b50565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126ef575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016126e69190613cce565b60405180910390fd5b6126fa825f83613741565b5050565b60605f600b8054905090503373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c08260405161274f91906145bf565b60405180910390a25f8111612799576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279090614635565b60405180910390fd5b5f6064600854836127aa9190614093565b6127b49190614101565b905060038110156127c457600390505b3373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c08260405161280a919061469d565b60405180910390a25f8167ffffffffffffffff81111561282d5761282c6146c9565b5b60405190808252806020026020018201604052801561285b5781602001602082028036833780820191505090505b5090505f8367ffffffffffffffff811115612879576128786146c9565b5b6040519080825280602002602001820160405280156128a75781602001602082028036833780820191505090505b5090505f805f606490505f5b86841080156128c157508181105b15612c7b575f6128d1848a61395a565b90508581815181106128e6576128e561451b565b5b60200260200101511580156129405750600f5461293d600b83815481106129105761290f61451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166112dc565b10155b80156129d4575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b82815481106129935761299261451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612a68575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b8281548110612a2757612a2661451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612afc575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b8281548110612abb57612aba61451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b8015612b90575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600b8281548110612b4f57612b4e61451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15612c5857600b8181548110612ba957612ba861451b565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16878681518110612be457612be361451b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001868281518110612c3357612c3261451b565b5b6020026020010190151590811515815250508480612c50906146f6565b955050612c67565b8180612c63906146f6565b9250505b8380612c72906146f6565b945050506128b3565b3373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c085604051612cc19190614787565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c084604051612d0f91906147fd565b60405180910390a2868414612d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5090614873565b60405180910390fd5b859850505050505050505090565b60608060605f845167ffffffffffffffff811115612d8857612d876146c9565b5b604051908082528060200260200182016040528015612db65781602001602082028036833780820191505090505b5090505f5b8551811015612e1357612de7868281518110612dda57612dd961451b565b5b60200260200101516112dc565b828281518110612dfa57612df961451b565b5b6020026020010181815250508080600101915050612dbb565b505f5b8551811015612fd1575f600182612e2d9190613e8d565b90505b8651811015612fc357828181518110612e4c57612e4b61451b565b5b6020026020010151838381518110612e6757612e6661451b565b5b60200260200101511015612fb657828181518110612e8857612e8761451b565b5b6020026020010151838381518110612ea357612ea261451b565b5b6020026020010151848481518110612ebe57612ebd61451b565b5b60200260200101858481518110612ed857612ed761451b565b5b6020026020010182815250828152505050868181518110612efc57612efb61451b565b5b6020026020010151878381518110612f1757612f1661451b565b5b6020026020010151888481518110612f3257612f3161451b565b5b60200260200101898481518110612f4c57612f4b61451b565b5b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050505b8080600101915050612e30565b508080600101915050612e16565b505f6064600f8751612fe39190614093565b612fed9190614101565b90505f6064602388516130009190614093565b61300a9190614101565b90503373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c08360405161305291906148db565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c0826040516130a09190614951565b60405180910390a25f8214806130b557505f81145b156130c35760019150600190505b5f818389516130d29190614060565b6130dc9190614060565b90503373ffffffffffffffffffffffffffffffffffffffff167ff92416a967e055f1b346af6bc2d356d8bd26b065aaac477b9254e85a792959c08260405161312491906149c7565b60405180910390a25f8367ffffffffffffffff811115613147576131466146c9565b5b6040519080825280602002602001820160405280156131755781602001602082028036833780820191505090505b5090505f8367ffffffffffffffff811115613193576131926146c9565b5b6040519080825280602002602001820160405280156131c15781602001602082028036833780820191505090505b5090505f8367ffffffffffffffff8111156131df576131de6146c9565b5b60405190808252806020026020018201604052801561320d5781602001602082028036833780820191505090505b5090505f5b8681101561328f578b818151811061322d5761322c61451b565b5b60200260200101518482815181106132485761324761451b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050613212565b505f5b8581101561331a578b81886132a79190613e8d565b815181106132b8576132b761451b565b5b60200260200101518382815181106132d3576132d261451b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050613292565b505f5b848110156133b0578b8187896133339190613e8d565b61333d9190613e8d565b8151811061334e5761334d61451b565b5b60200260200101518282815181106133695761336861451b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808060010191505061331d565b50828282995099509950505050505050509193909250565b5f805f805f60095f60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60648261343c9190614101565b90505f818361344b9190614060565b90505f8a60646005548461345f9190614093565b6134699190614101565b6134739190614101565b90505f8a6064600654856134879190614093565b6134919190614101565b61349b9190614101565b90505f8a6064600754866134af9190614093565b6134b99190614101565b6134c39190614101565b905082828287995099509950995050505050505093509350935093565b5f6134eb8484611e9d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461356c578181101561355d578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401613554939291906149f3565b60405180910390fd5b61356b84848484035f613572565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036135e2575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016135d99190613cce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613652575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016136499190613cce565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561373b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516137329190613b3e565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613791578060025f8282546137859190613e8d565b9250508190555061385f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561381a578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401613811939291906149f3565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138a6578060025f82825403925050819055506138f0565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161394d9190613b3e565b60405180910390a3505050565b5f81424433866040516020016139739493929190614a8d565b604051602081830303815290604052805190602001205f1c6139959190614ada565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6139df8261399d565b6139e981856139a7565b93506139f98185602086016139b7565b613a02816139c5565b840191505092915050565b5f6020820190508181035f830152613a2581846139d5565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a5a82613a31565b9050919050565b613a6a81613a50565b8114613a74575f80fd5b50565b5f81359050613a8581613a61565b92915050565b5f819050919050565b613a9d81613a8b565b8114613aa7575f80fd5b50565b5f81359050613ab881613a94565b92915050565b5f8060408385031215613ad457613ad3613a2d565b5b5f613ae185828601613a77565b9250506020613af285828601613aaa565b9150509250929050565b5f8115159050919050565b613b1081613afc565b82525050565b5f602082019050613b295f830184613b07565b92915050565b613b3881613a8b565b82525050565b5f602082019050613b515f830184613b2f565b92915050565b5f60208284031215613b6c57613b6b613a2d565b5b5f613b7984828501613a77565b91505092915050565b5f805f60608486031215613b9957613b98613a2d565b5b5f613ba686828701613aaa565b9350506020613bb786828701613aaa565b9250506040613bc886828701613aaa565b9150509250925092565b5f805f60608486031215613be957613be8613a2d565b5b5f613bf686828701613a77565b9350506020613c0786828701613a77565b9250506040613c1886828701613aaa565b9150509250925092565b5f60ff82169050919050565b613c3781613c22565b82525050565b5f602082019050613c505f830184613c2e565b92915050565b5f60208284031215613c6b57613c6a613a2d565b5b5f613c7884828501613aaa565b91505092915050565b5f8060408385031215613c9757613c96613a2d565b5b5f613ca485828601613a77565b9250506020613cb585828601613a77565b9150509250929050565b613cc881613a50565b82525050565b5f602082019050613ce15f830184613cbf565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613d2b57607f821691505b602082108103613d3e57613d3d613ce7565b5b50919050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d9e6021836139a7565b9150613da982613d44565b604082019050919050565b5f6020820190508181035f830152613dcb81613d92565b9050919050565b7f4f6e6c79206f776e65722063616e20736574207468652054696d657220636f6e5f8201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b5f613e2c6025836139a7565b9150613e3782613dd2565b604082019050919050565b5f6020820190508181035f830152613e5981613e20565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613e9782613a8b565b9150613ea283613a8b565b9250828201905080821115613eba57613eb9613e60565b5b92915050565b7f546f74616c2070657263656e74616765206d75737420626520313030000000005f82015250565b5f613ef4601c836139a7565b9150613eff82613ec0565b602082019050919050565b5f6020820190508181035f830152613f2181613ee8565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f613f5c600f836139a7565b9150613f6782613f28565b602082019050919050565b5f6020820190508181035f830152613f8981613f50565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613fc46014836139a7565b9150613fcf82613f90565b602082019050919050565b5f6020820190508181035f830152613ff181613fb8565b9050919050565b7f416c6c6f77616e636520657863656564656400000000000000000000000000005f82015250565b5f61402c6012836139a7565b915061403782613ff8565b602082019050919050565b5f6020820190508181035f83015261405981614020565b9050919050565b5f61406a82613a8b565b915061407583613a8b565b925082820390508181111561408d5761408c613e60565b5b92915050565b5f61409d82613a8b565b91506140a883613a8b565b92508282026140b681613a8b565b915082820484148315176140cd576140cc613e60565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61410b82613a8b565b915061411683613a8b565b925082614126576141256140d4565b5b828204905092915050565b7f4f6e6c79206f776e6572206f722054696d657220636f6e74726163742063616e5f8201527f2063616c6c20746869732066756e6374696f6e00000000000000000000000000602082015250565b5f61418b6033836139a7565b915061419682614131565b604082019050919050565b5f6020820190508181035f8301526141b88161417f565b9050919050565b5f819050919050565b5f819050919050565b5f6141eb6141e66141e1846141bf565b6141c8565b613a8b565b9050919050565b6141fb816141d1565b82525050565b7f476f696e6720746f2070726f63657373207069636b2077696e6e6572730000005f82015250565b5f614235601d836139a7565b915061424082614201565b602082019050919050565b5f60408201905061425e5f8301846141f2565b818103602083015261426f81614229565b905092915050565b7f476f696e6720746f2070726f636573732067726f75702077696e6e65727300005f82015250565b5f6142ab601e836139a7565b91506142b682614277565b602082019050919050565b5f6040820190506142d45f8301846141f2565b81810360208301526142e58161429f565b905092915050565b7f476f696e6720746f2070726f636573732063616c63756c6174652072657761725f8201527f642073697a650000000000000000000000000000000000000000000000000000602082015250565b5f6143476026836139a7565b9150614352826142ed565b604082019050919050565b5f6040820190506143705f8301846141f2565b81810360208301526143818161433b565b905092915050565b7f476f696e6720746f2070726f63657373207061796d656e7473000000000000005f82015250565b5f6143bd6019836139a7565b91506143c882614389565b602082019050919050565b5f6040820190506143e65f8301846141f2565b81810360208301526143f7816143b1565b905092915050565b7f50657263656e74616765206d757374206265206265747765656e203120616e645f8201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b5f6144596024836139a7565b9150614464826143ff565b604082019050919050565b5f6020820190508181035f8301526144868161444d565b9050919050565b7f4e6577206f776e65722063616e6e6f7420626520746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6144e76024836139a7565b91506144f28261448d565b604082019050919050565b5f6020820190508181035f830152614514816144db565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f746f74616c486f6c6465727300000000000000000000000000000000000000005f82015250565b5f6145a9600c836139a7565b91506145b482614575565b602082019050919050565b5f6040820190506145d25f830184613b2f565b81810360208301526145e38161459d565b905092915050565b7f4e6f20746f6b656e20686f6c6465727320746f207069636b2066726f6d0000005f82015250565b5f61461f601d836139a7565b915061462a826145eb565b602082019050919050565b5f6020820190508181035f83015261464c81614613565b9050919050565b7f77696e6e6572436f756e740000000000000000000000000000000000000000005f82015250565b5f614687600b836139a7565b915061469282614653565b602082019050919050565b5f6040820190506146b05f830184613b2f565b81810360208301526146c18161467b565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f61470082613a8b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361473257614731613e60565b5b600182019050919050565b7f73656c656374656457696e6e65727300000000000000000000000000000000005f82015250565b5f614771600f836139a7565b915061477c8261473d565b602082019050919050565b5f60408201905061479a5f830184613b2f565b81810360208301526147ab81614765565b905092915050565b7f696e6465780000000000000000000000000000000000000000000000000000005f82015250565b5f6147e76005836139a7565b91506147f2826147b3565b602082019050919050565b5f6040820190506148105f830184613b2f565b8181036020830152614821816147db565b905092915050565b7f4661696c656420746f207069636b20656e6f7567682077696e6e6572730000005f82015250565b5f61485d601d836139a7565b915061486882614829565b602082019050919050565b5f6020820190508181035f83015261488a81614851565b9050919050565b7f666972737447726f757053697a650000000000000000000000000000000000005f82015250565b5f6148c5600e836139a7565b91506148d082614891565b602082019050919050565b5f6040820190506148ee5f830184613b2f565b81810360208301526148ff816148b9565b905092915050565b7f7365636f6e6447726f757053697a6500000000000000000000000000000000005f82015250565b5f61493b600f836139a7565b915061494682614907565b602082019050919050565b5f6040820190506149645f830184613b2f565b81810360208301526149758161492f565b905092915050565b7f746869726447726f757053697a650000000000000000000000000000000000005f82015250565b5f6149b1600e836139a7565b91506149bc8261497d565b602082019050919050565b5f6040820190506149da5f830184613b2f565b81810360208301526149eb816149a5565b905092915050565b5f606082019050614a065f830186613cbf565b614a136020830185613b2f565b614a206040830184613b2f565b949350505050565b5f819050919050565b614a42614a3d82613a8b565b614a28565b82525050565b5f8160601b9050919050565b5f614a5e82614a48565b9050919050565b5f614a6f82614a54565b9050919050565b614a87614a8282613a50565b614a65565b82525050565b5f614a988287614a31565b602082019150614aa88286614a31565b602082019150614ab88285614a76565b601482019150614ac88284614a31565b60208201915081905095945050505050565b5f614ae482613a8b565b9150614aef83613a8b565b925082614aff57614afe6140d4565b5b82820690509291505056fea264697066735822122019909b9726a457675a4c48eddfa191bab8200bc40a1a205555c61f663a14a87b64736f6c634300081a003300000000000000000000000027378dda622da1c7c62ceffe8f3f713263d36eda00000000000000000000000027378dda622da1c7c62ceffe8f3f713263d36eda00000000000000000000000027378dda622da1c7c62ceffe8f3f713263d36eda