60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004457600080fd5b50620000556200005b60201b60201c565b620001cf565b60006200006d6200016560201b60201c565b90508060000160089054906101000a900460ff1615620000b9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614620001625767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051620001599190620001b2565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b620001ac816200018d565b82525050565b6000602082019050620001c96000830184620001a1565b92915050565b608051613d4b620001f9600039600081816112a1015281816112f601526114b10152613d4b6000f3fe6080604052600436106101b75760003560e01c806370a08231116100ec578063a22cb4651161008a578063b88d4fde11610064578063b88d4fde146105c3578063c87b56dd146105ec578063e985e9c514610629578063f2fde38b14610666576101b7565b8063a22cb46514610546578063a60bf1cb1461056f578063ad3cb1cc14610598576101b7565b80638456cb59116100c65780638456cb59146104b05780638da5cb5b146104c75780639498bd71146104f257806395d89b411461051b576101b7565b806370a0823114610433578063715018a6146104705780637cb6475914610487576101b7565b806342842e0e1161015957806352d1902d1161013357806352d1902d14610363578063573615cc1461038e5780635c975abb146103cb5780636352211e146103f6576101b7565b806342842e0e146102f557806342966c681461031e5780634f1ef28614610347576101b7565b8063095ea7b311610195578063095ea7b31461026157806323b872dd1461028a5780632eb4a7ab146102b35780633f4ba83a146102de576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612ddc565b61068f565b6040516101f09190612e24565b60405180910390f35b34801561020557600080fd5b5061020e6106a1565b60405161021b9190612ecf565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612f27565b610742565b6040516102589190612f95565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612fdc565b61075e565b005b34801561029657600080fd5b506102b160048036038101906102ac919061301c565b610774565b005b3480156102bf57600080fd5b506102c8610876565b6040516102d59190613088565b60405180910390f35b3480156102ea57600080fd5b506102f361087c565b005b34801561030157600080fd5b5061031c6004803603810190610317919061301c565b61088e565b005b34801561032a57600080fd5b5061034560048036038101906103409190612f27565b6108ae565b005b610361600480360381019061035c91906131d8565b6108c5565b005b34801561036f57600080fd5b506103786108e4565b6040516103859190613088565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190613294565b610917565b6040516103c29190612e24565b60405180910390f35b3480156103d757600080fd5b506103e0610955565b6040516103ed9190612e24565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612f27565b61097a565b60405161042a9190612f95565b60405180910390f35b34801561043f57600080fd5b5061045a600480360381019061045591906132e1565b61098c565b604051610467919061331d565b60405180910390f35b34801561047c57600080fd5b50610485610a55565b005b34801561049357600080fd5b506104ae60048036038101906104a99190613364565b610a69565b005b3480156104bc57600080fd5b506104c5610a7b565b005b3480156104d357600080fd5b506104dc610a8d565b6040516104e99190612f95565b60405180910390f35b3480156104fe57600080fd5b5061051960048036038101906105149190613364565b610ac5565b005b34801561052757600080fd5b50610530610ce7565b60405161053d9190612ecf565b60405180910390f35b34801561055257600080fd5b5061056d600480360381019061056891906133bd565b610d88565b005b34801561057b57600080fd5b506105966004803603810190610591919061349e565b610d9e565b005b3480156105a457600080fd5b506105ad610e8a565b6040516105ba9190612ecf565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e5919061352e565b610ec3565b005b3480156105f857600080fd5b50610613600480360381019061060e9190612f27565b610ee0565b6040516106209190612ecf565b60405180910390f35b34801561063557600080fd5b50610650600480360381019061064b91906135b1565b610ef2565b60405161065d9190612e24565b60405180910390f35b34801561067257600080fd5b5061068d600480360381019061068891906132e1565b610f94565b005b600061069a8261101a565b9050919050565b606060006106ad61107b565b90508060000180546106be90613620565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90613620565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b505050505091505090565b600061074d826110a3565b506107578261112b565b9050919050565b610770828261076b611176565b61117e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107e65760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016107dd9190612f95565b60405180910390fd5b60006107fa83836107f5611176565b611190565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610870578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161086793929190613651565b60405180910390fd5b50505050565b60015481565b6108846111a6565b61088c61122d565b565b6108a983838360405180602001604052806000815250610ec3565b505050565b6108c16000826108bc611176565b611190565b5050565b6108cd61129f565b6108d682611385565b6108e08282611390565b5050565b60006108ee6114af565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b600061094d83836001543360405160200161093291906136d0565b60405160208183030381529060405280519060200120611536565b905092915050565b60008061096061154f565b90508060000160009054906101000a900460ff1691505090565b6000610985826110a3565b9050919050565b60008061099761107b565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a0b5760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610a029190612f95565b60405180910390fd5b8060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b610a5d6111a6565b610a676000611577565b565b610a716111a6565b8060018190555050565b610a836111a6565b610a8b61164e565b565b600080610a986116c0565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000610acf6116e8565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610b1d5750825b9050600060018367ffffffffffffffff16148015610b52575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610b60575080155b15610b97576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610be75760018560000160086101000a81548160ff0219169083151502179055505b610c5b6040518060400160405280600781526020017f4d79546f6b656e000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d544b0000000000000000000000000000000000000000000000000000000000815250611710565b610c63611726565b610c6c33611738565b610c7461174c565b610c7c611756565b856001819055508315610cdf5760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610cd69190613744565b60405180910390a15b505050505050565b60606000610cf361107b565b9050806001018054610d0490613620565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3090613620565b8015610d7d5780601f10610d5257610100808354040283529160200191610d7d565b820191906000526020600020905b815481529060010190602001808311610d6057829003601f168201915b505050505091505090565b610d9a610d93611176565b8383611760565b5050565b8181610e14828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060015433604051602001610df991906136d0565b604051602081830303815290604052805190602001206118de565b610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a906137ab565b60405180910390fd5b6000806000815480929190610e67906137fa565b919050559050610e7787826118f5565b610e818187611913565b50505050505050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b610ece848484610774565b610eda8484848461197e565b50505050565b6060610eeb82611b35565b9050919050565b600080610efd61107b565b90508060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b610f9c6111a6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361100e5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016110059190612f95565b60405180910390fd5b61101781611577565b50565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611074575061107382611c59565b5b9050919050565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b6000806110af83611d3b565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361112257826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611119919061331d565b60405180910390fd5b80915050919050565b60008061113661107b565b905080600401600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600033905090565b61118b8383836001611d86565b505050565b600061119d848484611f5a565b90509392505050565b6111ae611176565b73ffffffffffffffffffffffffffffffffffffffff166111cc610a8d565b73ffffffffffffffffffffffffffffffffffffffff161461122b576111ef611176565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016112229190612f95565b60405180910390fd5b565b611235611f78565b600061123f61154f565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611287611176565b6040516112949190612f95565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148061134c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611333611fb8565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611383576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61138d6111a6565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113f857506040513d601f19601f820116820180604052508101906113f59190613857565b60015b61143957816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016114309190612f95565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146114a057806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016114979190613088565b60405180910390fd5b6114aa838361200f565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611534576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600082611544868685612082565b149050949350505050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b60006115816116c0565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6116566120da565b600061166061154f565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586116a8611176565b6040516116b59190612f95565b60405180910390a150565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61171861211b565b611722828261215b565b5050565b61172e61211b565b611736612198565b565b61174061211b565b611749816121cc565b50565b61175461211b565b565b61175e61211b565b565b600061176a61107b565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117dd57826040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016117d49190612f95565b60405180910390fd5b818160050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31846040516118d09190612e24565b60405180910390a350505050565b6000826118eb8584612252565b1490509392505050565b61190f8282604051806020016040528060008152506122a8565b5050565b600061191d6122c4565b90508181600001600085815260200190815260200160002090816119419190613a26565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce783604051611971919061331d565b60405180910390a1505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611b2f578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026119c2611176565b8685856040518563ffffffff1660e01b81526004016119e49493929190613b4d565b6020604051808303816000875af1925050508015611a2057506040513d601f19601f82011682018060405250810190611a1d9190613bae565b60015b611aa4573d8060008114611a50576040519150601f19603f3d011682016040523d82523d6000602084013e611a55565b606091505b506000815103611a9c57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611a939190612f95565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b2d57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611b249190612f95565b60405180910390fd5b505b50505050565b60606000611b416122c4565b9050611b4c836110a3565b5060008160000160008581526020019081526020016000208054611b6f90613620565b80601f0160208091040260200160405190810160405280929190818152602001828054611b9b90613620565b8015611be85780601f10611bbd57610100808354040283529160200191611be8565b820191906000526020600020905b815481529060010190602001808311611bcb57829003601f168201915b505050505090506000611bf96122ec565b90506000815103611c0f57819350505050611c54565b600082511115611c45578082604051602001611c2c929190613c17565b6040516020818303038152906040529350505050611c54565b611c4e85612303565b93505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d2457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611d345750611d338261236c565b5b9050919050565b600080611d4661107b565b905080600201600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000611d9061107b565b90508180611dcb5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eff576000611ddb856110a3565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e4657508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611e595750611e578185610ef2565b155b15611e9b57836040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611e929190612f95565b60405180910390fd5b8215611efd57848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8481600401600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6000611f646120da565b611f6f8484846123d6565b90509392505050565b611f80610955565b611fb6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000611fe67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612603565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6120188261260d565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a26000815111156120755761206f82826126da565b5061207e565b61207d61275e565b5b5050565b60008082905060005b858590508110156120ce576120b9828787848181106120ad576120ac613c3b565b5b9050602002013561279b565b915080806120c6906137fa565b91505061208b565b50809150509392505050565b6120e2610955565b15612119576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6121236127c6565b612159576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61216361211b565b600061216d61107b565b9050828160000190816121809190613a26565b50818160010190816121929190613a26565b50505050565b6121a061211b565b60006121aa61154f565b905060008160000160006101000a81548160ff02191690831515021790555050565b6121d461211b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122465760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161223d9190612f95565b60405180910390fd5b61224f81611577565b50565b60008082905060005b845181101561229d576122888286838151811061227b5761227a613c3b565b5b602002602001015161279b565b91508080612295906137fa565b91505061225b565b508091505092915050565b6122b283836127e6565b6122bf600084848461197e565b505050565b60007f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e7900905090565b606060405180602001604052806000815250905090565b606061230e826110a3565b5060006123196122ec565b905060008151116123395760405180602001604052806000815250612364565b80612343846128df565b604051602001612354929190613c17565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000806123e161107b565b905060006123ee85611d3b565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146124305761242f8185876129ad565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146124c357612472600086600080611d86565b60018260030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146125485760018260030160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8582600201600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b6000819050919050565b60008173ffffffffffffffffffffffffffffffffffffffff163b0361266957806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016126609190612f95565b60405180910390fd5b806126967f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612603565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516127049190613ca6565b600060405180830381855af49150503d806000811461273f576040519150601f19603f3d011682016040523d82523d6000602084013e612744565b606091505b5091509150612754858383612a71565b9250505092915050565b6000341115612799576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008183106127b3576127ae8284612b00565b6127be565b6127bd8383612b00565b5b905092915050565b60006127d06116e8565b60000160089054906101000a900460ff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128585760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161284f9190612f95565b60405180910390fd5b600061286683836000611190565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146128da5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016128d19190612f95565b60405180910390fd5b505050565b6060600060016128ee84612b17565b01905060008167ffffffffffffffff81111561290d5761290c6130ad565b5b6040519080825280601f01601f19166020018201604052801561293f5781602001600182028036833780820191505090505b509050600082602001820190505b6001156129a2578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161299657612995613cbd565b5b0494506000850361294d575b819350505050919050565b6129b8838383612c6a565b612a6c57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a2d57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612a24919061331d565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612a63929190613cec565b60405180910390fd5b505050565b606082612a8657612a8182612d2b565b612af8565b60008251148015612aae575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612af057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612ae79190612f95565b60405180910390fd5b819050612af9565b5b9392505050565b600082600052816020526040600020905092915050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612b75577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612b6b57612b6a613cbd565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612bb2576d04ee2d6d415b85acef81000000008381612ba857612ba7613cbd565b5b0492506020810190505b662386f26fc100008310612be157662386f26fc100008381612bd757612bd6613cbd565b5b0492506010810190505b6305f5e1008310612c0a576305f5e1008381612c0057612bff613cbd565b5b0492506008810190505b6127108310612c2f576127108381612c2557612c24613cbd565b5b0492506004810190505b60648310612c525760648381612c4857612c47613cbd565b5b0492506002810190505b600a8310612c61576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d2257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612ce35750612ce28484610ef2565b5b80612d2157508273ffffffffffffffffffffffffffffffffffffffff16612d098361112b565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600081511115612d3e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612db981612d84565b8114612dc457600080fd5b50565b600081359050612dd681612db0565b92915050565b600060208284031215612df257612df1612d7a565b5b6000612e0084828501612dc7565b91505092915050565b60008115159050919050565b612e1e81612e09565b82525050565b6000602082019050612e396000830184612e15565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e79578082015181840152602081019050612e5e565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ea182612e3f565b612eab8185612e4a565b9350612ebb818560208601612e5b565b612ec481612e85565b840191505092915050565b60006020820190508181036000830152612ee98184612e96565b905092915050565b6000819050919050565b612f0481612ef1565b8114612f0f57600080fd5b50565b600081359050612f2181612efb565b92915050565b600060208284031215612f3d57612f3c612d7a565b5b6000612f4b84828501612f12565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f7f82612f54565b9050919050565b612f8f81612f74565b82525050565b6000602082019050612faa6000830184612f86565b92915050565b612fb981612f74565b8114612fc457600080fd5b50565b600081359050612fd681612fb0565b92915050565b60008060408385031215612ff357612ff2612d7a565b5b600061300185828601612fc7565b925050602061301285828601612f12565b9150509250929050565b60008060006060848603121561303557613034612d7a565b5b600061304386828701612fc7565b935050602061305486828701612fc7565b925050604061306586828701612f12565b9150509250925092565b6000819050919050565b6130828161306f565b82525050565b600060208201905061309d6000830184613079565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130e582612e85565b810181811067ffffffffffffffff82111715613104576131036130ad565b5b80604052505050565b6000613117612d70565b905061312382826130dc565b919050565b600067ffffffffffffffff821115613143576131426130ad565b5b61314c82612e85565b9050602081019050919050565b82818337600083830152505050565b600061317b61317684613128565b61310d565b905082815260208101848484011115613197576131966130a8565b5b6131a2848285613159565b509392505050565b600082601f8301126131bf576131be6130a3565b5b81356131cf848260208601613168565b91505092915050565b600080604083850312156131ef576131ee612d7a565b5b60006131fd85828601612fc7565b925050602083013567ffffffffffffffff81111561321e5761321d612d7f565b5b61322a858286016131aa565b9150509250929050565b600080fd5b600080fd5b60008083601f840112613254576132536130a3565b5b8235905067ffffffffffffffff81111561327157613270613234565b5b60208301915083602082028301111561328d5761328c613239565b5b9250929050565b600080602083850312156132ab576132aa612d7a565b5b600083013567ffffffffffffffff8111156132c9576132c8612d7f565b5b6132d58582860161323e565b92509250509250929050565b6000602082840312156132f7576132f6612d7a565b5b600061330584828501612fc7565b91505092915050565b61331781612ef1565b82525050565b6000602082019050613332600083018461330e565b92915050565b6133418161306f565b811461334c57600080fd5b50565b60008135905061335e81613338565b92915050565b60006020828403121561337a57613379612d7a565b5b60006133888482850161334f565b91505092915050565b61339a81612e09565b81146133a557600080fd5b50565b6000813590506133b781613391565b92915050565b600080604083850312156133d4576133d3612d7a565b5b60006133e285828601612fc7565b92505060206133f3858286016133a8565b9150509250929050565b600067ffffffffffffffff821115613418576134176130ad565b5b61342182612e85565b9050602081019050919050565b600061344161343c846133fd565b61310d565b90508281526020810184848401111561345d5761345c6130a8565b5b613468848285613159565b509392505050565b600082601f830112613485576134846130a3565b5b813561349584826020860161342e565b91505092915050565b600080600080606085870312156134b8576134b7612d7a565b5b60006134c687828801612fc7565b945050602085013567ffffffffffffffff8111156134e7576134e6612d7f565b5b6134f387828801613470565b935050604085013567ffffffffffffffff81111561351457613513612d7f565b5b6135208782880161323e565b925092505092959194509250565b6000806000806080858703121561354857613547612d7a565b5b600061355687828801612fc7565b945050602061356787828801612fc7565b935050604061357887828801612f12565b925050606085013567ffffffffffffffff81111561359957613598612d7f565b5b6135a5878288016131aa565b91505092959194509250565b600080604083850312156135c8576135c7612d7a565b5b60006135d685828601612fc7565b92505060206135e785828601612fc7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061363857607f821691505b60208210810361364b5761364a6135f1565b5b50919050565b60006060820190506136666000830186612f86565b613673602083018561330e565b6136806040830184612f86565b949350505050565b60008160601b9050919050565b60006136a082613688565b9050919050565b60006136b282613695565b9050919050565b6136ca6136c582612f74565b6136a7565b82525050565b60006136dc82846136b9565b60148201915081905092915050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b600061372e613729613724846136eb565b613709565b6136f5565b9050919050565b61373e81613713565b82525050565b60006020820190506137596000830184613735565b92915050565b7f6e6f74204d696e74657200000000000000000000000000000000000000000000600082015250565b6000613795600a83612e4a565b91506137a08261375f565b602082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061380582612ef1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613837576138366137cb565b5b600182019050919050565b60008151905061385181613338565b92915050565b60006020828403121561386d5761386c612d7a565b5b600061387b84828501613842565b91505092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026138e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826138a9565b6138f086836138a9565b95508019841693508086168417925050509392505050565b600061392361391e61391984612ef1565b613709565b612ef1565b9050919050565b6000819050919050565b61393d83613908565b6139516139498261392a565b8484546138b6565b825550505050565b600090565b613966613959565b613971818484613934565b505050565b5b818110156139955761398a60008261395e565b600181019050613977565b5050565b601f8211156139da576139ab81613884565b6139b484613899565b810160208510156139c3578190505b6139d76139cf85613899565b830182613976565b50505b505050565b600082821c905092915050565b60006139fd600019846008026139df565b1980831691505092915050565b6000613a1683836139ec565b9150826002028217905092915050565b613a2f82612e3f565b67ffffffffffffffff811115613a4857613a476130ad565b5b613a528254613620565b613a5d828285613999565b600060209050601f831160018114613a905760008415613a7e578287015190505b613a888582613a0a565b865550613af0565b601f198416613a9e86613884565b60005b82811015613ac657848901518255600182019150602085019450602081019050613aa1565b86831015613ae35784890151613adf601f8916826139ec565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b6000613b1f82613af8565b613b298185613b03565b9350613b39818560208601612e5b565b613b4281612e85565b840191505092915050565b6000608082019050613b626000830187612f86565b613b6f6020830186612f86565b613b7c604083018561330e565b8181036060830152613b8e8184613b14565b905095945050505050565b600081519050613ba881612db0565b92915050565b600060208284031215613bc457613bc3612d7a565b5b6000613bd284828501613b99565b91505092915050565b600081905092915050565b6000613bf182612e3f565b613bfb8185613bdb565b9350613c0b818560208601612e5b565b80840191505092915050565b6000613c238285613be6565b9150613c2f8284613be6565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b6000613c8082613af8565b613c8a8185613c6a565b9350613c9a818560208601612e5b565b80840191505092915050565b6000613cb28284613c75565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000604082019050613d016000830185612f86565b613d0e602083018461330e565b939250505056fea2646970667358221220e4e32fe1737a24f29eb2654d964251071abf437f98d025d7f6d70028ba30f64864736f6c63430008140033