6080604052670118aa14d9418000600a553480156200001d57600080fd5b5060405162004dc238038062004dc2833981810160405281019062000043919062000527565b6040518060400160405280600d81526020017f54686520496d6d6f7274616c73000000000000000000000000000000000000008152506040518060400160405280600381526020017f585f5800000000000000000000000000000000000000000000000000000000008152508160009081620000c091906200083a565b508060019081620000d291906200083a565b505050620000f5620000e96200022660201b60201c565b6200022e60201b60201c565b86600990816200010691906200083a565b5085600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b8190555080600c819055505050505050505062000921565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200035d8262000312565b810181811067ffffffffffffffff821117156200037f576200037e62000323565b5b80604052505050565b600062000394620002f4565b9050620003a2828262000352565b919050565b600067ffffffffffffffff821115620003c557620003c462000323565b5b620003d08262000312565b9050602081019050919050565b60005b83811015620003fd578082015181840152602081019050620003e0565b60008484015250505050565b6000620004206200041a84620003a7565b62000388565b9050828152602081018484840111156200043f576200043e6200030d565b5b6200044c848285620003dd565b509392505050565b600082601f8301126200046c576200046b62000308565b5b81516200047e84826020860162000409565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004b48262000487565b9050919050565b620004c681620004a7565b8114620004d257600080fd5b50565b600081519050620004e681620004bb565b92915050565b6000819050919050565b6200050181620004ec565b81146200050d57600080fd5b50565b6000815190506200052181620004f6565b92915050565b600080600080600080600060e0888a031215620005495762000548620002fe565b5b600088015167ffffffffffffffff8111156200056a576200056962000303565b5b620005788a828b0162000454565b97505060206200058b8a828b01620004d5565b96505060406200059e8a828b01620004d5565b9550506060620005b18a828b01620004d5565b9450506080620005c48a828b01620004d5565b93505060a0620005d78a828b0162000510565b92505060c0620005ea8a828b0162000510565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200064c57607f821691505b60208210810362000662576200066162000604565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006cc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200068d565b620006d886836200068d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200071b620007156200070f84620004ec565b620006f0565b620004ec565b9050919050565b6000819050919050565b6200073783620006fa565b6200074f620007468262000722565b8484546200069a565b825550505050565b600090565b6200076662000757565b620007738184846200072c565b505050565b5b818110156200079b576200078f6000826200075c565b60018101905062000779565b5050565b601f821115620007ea57620007b48162000668565b620007bf846200067d565b81016020851015620007cf578190505b620007e7620007de856200067d565b83018262000778565b50505b505050565b600082821c905092915050565b60006200080f60001984600802620007ef565b1980831691505092915050565b60006200082a8383620007fc565b9150826002028217905092915050565b6200084582620005f9565b67ffffffffffffffff81111562000861576200086062000323565b5b6200086d825462000633565b6200087a8282856200079f565b600060209050601f831160018114620008b257600084156200089d578287015190505b620008a985826200081c565b86555062000919565b601f198416620008c28662000668565b60005b82811015620008ec57848901518255600182019150602085019450602081019050620008c5565b868310156200090c578489015162000908601f891682620007fc565b8355505b6001600288020188555050505b505050505050565b61449180620009316000396000f3fe6080604052600436106101ee5760003560e01c806370a082311161010d578063a2309ff8116100a0578063d62f3b1c1161006f578063d62f3b1c14610687578063ddd1783a1461069e578063e985e9c5146106c9578063f19e75d414610706578063f2fde38b1461072f576101ee565b8063a2309ff8146105cb578063b88d4fde146105f6578063c87b56dd1461061f578063d5abeb011461065c576101ee565b80638da5cb5b116100dc5780638da5cb5b1461050f57806395d89b411461053a5780639b19251a14610565578063a22cb465146105a2576101ee565b806370a0823114610488578063715018a6146104c55780637f649783146104dc578063804f43cd14610505576101ee565b80633ccfd60b116101855780636352211e116101545780636352211e146103cc57806367243482146104095780636817c76c146104325780636c0360eb1461045d576101ee565b80633ccfd60b1461034a578063419a09601461036157806342842e0e1461038c5780634fee1290146103b5576101ee565b806318160ddd116101c157806318160ddd146102c157806323b872dd146102ec57806326092b831461031557806327c7dde71461031f576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612ac0565b610758565b6040516102279190612b08565b60405180910390f35b34801561023c57600080fd5b506102456107b9565b6040516102529190612bb3565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612c0b565b61084b565b60405161028f9190612c79565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612cc0565b610891565b005b3480156102cd57600080fd5b506102d66109a8565b6040516102e39190612d0f565b60405180910390f35b3480156102f857600080fd5b50610313600480360381019061030e9190612d2a565b6109b9565b005b61031d610a19565b005b34801561032b57600080fd5b50610334610b23565b6040516103419190612b08565b60405180910390f35b34801561035657600080fd5b5061035f610b36565b005b34801561036d57600080fd5b50610376610da5565b6040516103839190612b08565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190612d2a565b610db8565b005b3480156103c157600080fd5b506103ca610dd8565b005b3480156103d857600080fd5b506103f360048036038101906103ee9190612c0b565b610dfd565b6040516104009190612c79565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190612e38565b610e83565b005b34801561043e57600080fd5b50610447610fbb565b6040516104549190612d0f565b60405180910390f35b34801561046957600080fd5b50610472610fc1565b60405161047f9190612bb3565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612eb9565b61104f565b6040516104bc9190612d0f565b60405180910390f35b3480156104d157600080fd5b506104da611106565b005b3480156104e857600080fd5b5061050360048036038101906104fe9190612ee6565b61111a565b005b61050d61123a565b005b34801561051b57600080fd5b50610524611428565b6040516105319190612c79565b60405180910390f35b34801561054657600080fd5b5061054f611452565b60405161055c9190612bb3565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190612eb9565b6114e4565b6040516105999190612b08565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190612f5f565b611504565b005b3480156105d757600080fd5b506105e061151a565b6040516105ed9190612d0f565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906130cf565b611520565b005b34801561062b57600080fd5b5061064660048036038101906106419190612c0b565b611582565b6040516106539190612bb3565b60405180910390f35b34801561066857600080fd5b50610671611694565b60405161067e9190612d0f565b60405180910390f35b34801561069357600080fd5b5061069c61169a565b005b3480156106aa57600080fd5b506106b36116bf565b6040516106c09190612d0f565b60405180910390f35b3480156106d557600080fd5b506106f060048036038101906106eb9190613152565b6116c5565b6040516106fd9190612b08565b60405180910390f35b34801561071257600080fd5b5061072d60048036038101906107289190612c0b565b611759565b005b34801561073b57600080fd5b5061075660048036038101906107519190612eb9565b611824565b005b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107b257506107b1826118a7565b5b9050919050565b6060600080546107c8906131c1565b80601f01602080910402602001604051908101604052809291908181526020018280546107f4906131c1565b80156108415780601f1061081657610100808354040283529160200191610841565b820191906000526020600020905b81548152906001019060200180831161082457829003601f168201915b5050505050905090565b600061085682611989565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089c82610dfd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390613264565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661092b6119d4565b73ffffffffffffffffffffffffffffffffffffffff16148061095a5750610959816109546119d4565b6116c5565b5b610999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610990906132f6565b60405180910390fd5b6109a383836119dc565b505050565b60006109b46008611a95565b905090565b6109ca6109c46119d4565b82611aa3565b610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0090613388565b60405180910390fd5b610a14838383611b38565b505050565b601160159054906101000a900460ff16610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f906133f4565b60405180910390fd5b600a54341015610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490613460565b60405180910390fd5b600c546001600d54610abf91906134af565b1115610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af79061352f565b60405180910390fd5b610b0933611e31565b600d6000815480929190610b1c9061354f565b9190505550565b601160159054906101000a900460ff1681565b610b3e611f33565b600047905060008111610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d906135e3565b60405180910390fd5b60006064604083610b979190613603565b610ba19190613674565b905060006064601484610bb49190613603565b610bbe9190613674565b905060006064600a85610bd19190613603565b610bdb9190613674565b905060006064600686610bee9190613603565b610bf89190613674565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610c62573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610ccb573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610d34573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d9d573d6000803e3d6000fd5b505050505050565b601160149054906101000a900460ff1681565b610dd383838360405180602001604052806000815250611520565b505050565b610de0611f33565b6001601160146101000a81548160ff021916908315150217905550565b600080610e0983611fb1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e71906136f1565b60405180910390fd5b80915050919050565b610e8b611f33565b818190508484905014610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061375d565b60405180910390fd5b60005b84849050811015610fb4576000858583818110610ef657610ef561377d565b5b9050602002016020810190610f0b9190612eb9565b90506000848484818110610f2257610f2161377d565b5b905060200201359050600081118015610f3c575060028111155b610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f72906137f8565b60405180910390fd5b60005b81811015610fa057610f8f83611e31565b80610f999061354f565b9050610f7e565b50505080610fad9061354f565b9050610ed6565b5050505050565b600a5481565b60098054610fce906131c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffa906131c1565b80156110475780601f1061101c57610100808354040283529160200191611047565b820191906000526020600020905b81548152906001019060200180831161102a57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b69061388a565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61110e611f33565b6111186000611fee565b565b611122611f33565b60005b828290508110156112355760008383838181106111455761114461377d565b5b905060200201602081019061115a9190612eb9565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c2906138f6565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550508061122e9061354f565b9050611125565b505050565b601160149054906101000a900460ff16611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128090613988565b60405180910390fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613a1a565b60405180910390fd5b600a5434101561135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135190613460565b60405180910390fd5b600c546001600d5461136c91906134af565b11156113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a49061352f565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061140e33611e31565b600d60008154809291906114219061354f565b9190505550565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611461906131c1565b80601f016020809104026020016040519081016040528092919081815260200182805461148d906131c1565b80156114da5780601f106114af576101008083540402835291602001916114da565b820191906000526020600020905b8154815290600101906020018083116114bd57829003601f168201915b5050505050905090565b60126020528060005260406000206000915054906101000a900460ff1681565b61151661150f6119d4565b83836120b4565b5050565b600d5481565b61153161152b6119d4565b83611aa3565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613388565b60405180910390fd5b61157c84848484612220565b50505050565b606061158d82611989565b60006006600084815260200190815260200160002080546115ad906131c1565b80601f01602080910402602001604051908101604052809291908181526020018280546115d9906131c1565b80156116265780601f106115fb57610100808354040283529160200191611626565b820191906000526020600020905b81548152906001019060200180831161160957829003601f168201915b50505050509050600061163761227c565b9050600081510361164c57819250505061168f565b600082511115611681578082604051602001611669929190613a76565b6040516020818303038152906040529250505061168f565b61168a84612293565b925050505b919050565b600b5481565b6116a2611f33565b6001601160156101000a81548160ff021916908315150217905550565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611761611f33565b600081116117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b90613ae6565b60405180910390fd5b600b54816117b06109a8565b6117ba91906134af565b11156117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f290613b52565b60405180910390fd5b60005b818110156118205761180f33611e31565b806118199061354f565b90506117fe565b5050565b61182c611f33565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290613be4565b60405180910390fd5b6118a481611fee565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061197257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806119825750611981826122fb565b5b9050919050565b61199281612365565b6119d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c8906136f1565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611a4f83610dfd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600080611aaf83610dfd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611af15750611af081856116c5565b5b80611b2f57508373ffffffffffffffffffffffffffffffffffffffff16611b178461084b565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b5882610dfd565b73ffffffffffffffffffffffffffffffffffffffff1614611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613c76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490613d08565b60405180910390fd5b611c2a83838360016123a6565b8273ffffffffffffffffffffffffffffffffffffffff16611c4a82610dfd565b73ffffffffffffffffffffffffffffffffffffffff1614611ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9790613c76565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e2c83838360016123ac565b505050565b600b54611e3c6109a8565b10611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7390613b52565b60405180910390fd5b611e8660086123b2565b6000611e926008611a95565b9050611e9e82826123c8565b6001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eee91906134af565b9250508190555060006009611f02836125e5565b604051602001611f13929190613e0c565b6040516020818303038152906040529050611f2e82826126b3565b505050565b611f3b6119d4565b73ffffffffffffffffffffffffffffffffffffffff16611f59611428565b73ffffffffffffffffffffffffffffffffffffffff1614611faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa690613e87565b60405180910390fd5b565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613ef3565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122139190612b08565b60405180910390a3505050565b61222b848484611b38565b61223784848484612757565b612276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226d90613f85565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606061229e82611989565b60006122a861227c565b905060008151116122c857604051806020016040528060008152506122f3565b806122d2846125e5565b6040516020016122e3929190613a76565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661238783611fb1565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b50505050565b50505050565b6001816000016000828254019250508190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242e90613ff1565b60405180910390fd5b61244081612365565b15612480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124779061405d565b60405180910390fd5b61248e6000838360016123a6565b61249781612365565b156124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce9061405d565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125e16000838360016123ac565b5050565b6060600060016125f4846128de565b01905060008167ffffffffffffffff81111561261357612612612fa4565b5b6040519080825280601f01601f1916602001820160405280156126455781602001600182028036833780820191505090505b509050600082602001820190505b6001156126a8578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161269c5761269b613645565b5b04945060008503612653575b819350505050919050565b6126bc82612365565b6126fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f2906140ef565b60405180910390fd5b8060066000848152602001908152602001600020908161271b91906142a6565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce78260405161274b9190612d0f565b60405180910390a15050565b60006127788473ffffffffffffffffffffffffffffffffffffffff16612a31565b156128d1578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026127a16119d4565b8786866040518563ffffffff1660e01b81526004016127c394939291906143cd565b6020604051808303816000875af19250505080156127ff57506040513d601f19601f820116820180604052508101906127fc919061442e565b60015b612881573d806000811461282f576040519150601f19603f3d011682016040523d82523d6000602084013e612834565b606091505b506000815103612879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287090613f85565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506128d6565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061293c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161293257612931613645565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612979576d04ee2d6d415b85acef8100000000838161296f5761296e613645565b5b0492506020810190505b662386f26fc1000083106129a857662386f26fc10000838161299e5761299d613645565b5b0492506010810190505b6305f5e10083106129d1576305f5e10083816129c7576129c6613645565b5b0492506008810190505b61271083106129f65761271083816129ec576129eb613645565b5b0492506004810190505b60648310612a195760648381612a0f57612a0e613645565b5b0492506002810190505b600a8310612a28576001810190505b80915050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a9d81612a68565b8114612aa857600080fd5b50565b600081359050612aba81612a94565b92915050565b600060208284031215612ad657612ad5612a5e565b5b6000612ae484828501612aab565b91505092915050565b60008115159050919050565b612b0281612aed565b82525050565b6000602082019050612b1d6000830184612af9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b5d578082015181840152602081019050612b42565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b8582612b23565b612b8f8185612b2e565b9350612b9f818560208601612b3f565b612ba881612b69565b840191505092915050565b60006020820190508181036000830152612bcd8184612b7a565b905092915050565b6000819050919050565b612be881612bd5565b8114612bf357600080fd5b50565b600081359050612c0581612bdf565b92915050565b600060208284031215612c2157612c20612a5e565b5b6000612c2f84828501612bf6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6382612c38565b9050919050565b612c7381612c58565b82525050565b6000602082019050612c8e6000830184612c6a565b92915050565b612c9d81612c58565b8114612ca857600080fd5b50565b600081359050612cba81612c94565b92915050565b60008060408385031215612cd757612cd6612a5e565b5b6000612ce585828601612cab565b9250506020612cf685828601612bf6565b9150509250929050565b612d0981612bd5565b82525050565b6000602082019050612d246000830184612d00565b92915050565b600080600060608486031215612d4357612d42612a5e565b5b6000612d5186828701612cab565b9350506020612d6286828701612cab565b9250506040612d7386828701612bf6565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612da257612da1612d7d565b5b8235905067ffffffffffffffff811115612dbf57612dbe612d82565b5b602083019150836020820283011115612ddb57612dda612d87565b5b9250929050565b60008083601f840112612df857612df7612d7d565b5b8235905067ffffffffffffffff811115612e1557612e14612d82565b5b602083019150836020820283011115612e3157612e30612d87565b5b9250929050565b60008060008060408587031215612e5257612e51612a5e565b5b600085013567ffffffffffffffff811115612e7057612e6f612a63565b5b612e7c87828801612d8c565b9450945050602085013567ffffffffffffffff811115612e9f57612e9e612a63565b5b612eab87828801612de2565b925092505092959194509250565b600060208284031215612ecf57612ece612a5e565b5b6000612edd84828501612cab565b91505092915050565b60008060208385031215612efd57612efc612a5e565b5b600083013567ffffffffffffffff811115612f1b57612f1a612a63565b5b612f2785828601612d8c565b92509250509250929050565b612f3c81612aed565b8114612f4757600080fd5b50565b600081359050612f5981612f33565b92915050565b60008060408385031215612f7657612f75612a5e565b5b6000612f8485828601612cab565b9250506020612f9585828601612f4a565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612fdc82612b69565b810181811067ffffffffffffffff82111715612ffb57612ffa612fa4565b5b80604052505050565b600061300e612a54565b905061301a8282612fd3565b919050565b600067ffffffffffffffff82111561303a57613039612fa4565b5b61304382612b69565b9050602081019050919050565b82818337600083830152505050565b600061307261306d8461301f565b613004565b90508281526020810184848401111561308e5761308d612f9f565b5b613099848285613050565b509392505050565b600082601f8301126130b6576130b5612d7d565b5b81356130c684826020860161305f565b91505092915050565b600080600080608085870312156130e9576130e8612a5e565b5b60006130f787828801612cab565b945050602061310887828801612cab565b935050604061311987828801612bf6565b925050606085013567ffffffffffffffff81111561313a57613139612a63565b5b613146878288016130a1565b91505092959194509250565b6000806040838503121561316957613168612a5e565b5b600061317785828601612cab565b925050602061318885828601612cab565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806131d957607f821691505b6020821081036131ec576131eb613192565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061324e602183612b2e565b9150613259826131f2565b604082019050919050565b6000602082019050818103600083015261327d81613241565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b60006132e0603d83612b2e565b91506132eb82613284565b604082019050919050565b6000602082019050818103600083015261330f816132d3565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613372602d83612b2e565b915061337d82613316565b604082019050919050565b600060208201905081810360008301526133a181613365565b9050919050565b7f5075626c6963206d696e74696e67206973206e6f7420617661696c61626c6500600082015250565b60006133de601f83612b2e565b91506133e9826133a8565b602082019050919050565b6000602082019050818103600083015261340d816133d1565b9050919050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b600061344a601483612b2e565b915061345582613414565b602082019050919050565b600060208201905081810360008301526134798161343d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134ba82612bd5565b91506134c583612bd5565b92508282019050808211156134dd576134dc613480565b5b92915050565b7f4d696e74696e67206c696d697420726561636865640000000000000000000000600082015250565b6000613519601583612b2e565b9150613524826134e3565b602082019050919050565b600060208201905081810360008301526135488161350c565b9050919050565b600061355a82612bd5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358c5761358b613480565b5b600182019050919050565b7f4e6f2066756e647320746f207769746864726177000000000000000000000000600082015250565b60006135cd601483612b2e565b91506135d882613597565b602082019050919050565b600060208201905081810360008301526135fc816135c0565b9050919050565b600061360e82612bd5565b915061361983612bd5565b925082820261362781612bd5565b9150828204841483151761363e5761363d613480565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061367f82612bd5565b915061368a83612bd5565b92508261369a57613699613645565b5b828204905092915050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006136db601883612b2e565b91506136e6826136a5565b602082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000613747601683612b2e565b915061375282613711565b602082019050919050565b600060208201905081810360008301526137768161373a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b60006137e2600e83612b2e565b91506137ed826137ac565b602082019050919050565b60006020820190508181036000830152613811816137d5565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613874602983612b2e565b915061387f82613818565b604082019050919050565b600060208201905081810360008301526138a381613867565b9050919050565b7f496e76616c696420757365722061646472657373000000000000000000000000600082015250565b60006138e0601483612b2e565b91506138eb826138aa565b602082019050919050565b6000602082019050818103600083015261390f816138d3565b9050919050565b7f57686974656c697374206d696e74696e67206973206e6f7420617661696c616260008201527f6c65000000000000000000000000000000000000000000000000000000000000602082015250565b6000613972602283612b2e565b915061397d82613916565b604082019050919050565b600060208201905081810360008301526139a181613965565b9050919050565b7f57686974656c697374206d696e74696e67206973206e6f7420617661696c616260008201527f6c6520666f72207468652073656e646572000000000000000000000000000000602082015250565b6000613a04603183612b2e565b9150613a0f826139a8565b604082019050919050565b60006020820190508181036000830152613a33816139f7565b9050919050565b600081905092915050565b6000613a5082612b23565b613a5a8185613a3a565b9350613a6a818560208601612b3f565b80840191505092915050565b6000613a828285613a45565b9150613a8e8284613a45565b91508190509392505050565b7f496e76616c6964206e756d626572206f6620746f6b656e730000000000000000600082015250565b6000613ad0601883612b2e565b9150613adb82613a9a565b602082019050919050565b60006020820190508181036000830152613aff81613ac3565b9050919050565b7f4d6178696d756d20737570706c79207265616368656400000000000000000000600082015250565b6000613b3c601683612b2e565b9150613b4782613b06565b602082019050919050565b60006020820190508181036000830152613b6b81613b2f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613bce602683612b2e565b9150613bd982613b72565b604082019050919050565b60006020820190508181036000830152613bfd81613bc1565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613c60602583612b2e565b9150613c6b82613c04565b604082019050919050565b60006020820190508181036000830152613c8f81613c53565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613cf2602483612b2e565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b60008190508160005260206000209050919050565b60008154613d4a816131c1565b613d548186613a3a565b94506001821660008114613d6f5760018114613d8457613db7565b60ff1983168652811515820286019350613db7565b613d8d85613d28565b60005b83811015613daf57815481890152600182019150602081019050613d90565b838801955050505b50505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613df6600583613a3a565b9150613e0182613dc0565b600582019050919050565b6000613e188285613d3d565b9150613e248284613a45565b9150613e2f82613de9565b91508190509392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613e71602083612b2e565b9150613e7c82613e3b565b602082019050919050565b60006020820190508181036000830152613ea081613e64565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613edd601983612b2e565b9150613ee882613ea7565b602082019050919050565b60006020820190508181036000830152613f0c81613ed0565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f6f603283612b2e565b9150613f7a82613f13565b604082019050919050565b60006020820190508181036000830152613f9e81613f62565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613fdb602083612b2e565b9150613fe682613fa5565b602082019050919050565b6000602082019050818103600083015261400a81613fce565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614047601c83612b2e565b915061405282614011565b602082019050919050565b600060208201905081810360008301526140768161403a565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006140d9602e83612b2e565b91506140e48261407d565b604082019050919050565b60006020820190508181036000830152614108816140cc565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261415c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261411f565b614166868361411f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006141a361419e61419984612bd5565b61417e565b612bd5565b9050919050565b6000819050919050565b6141bd83614188565b6141d16141c9826141aa565b84845461412c565b825550505050565b600090565b6141e66141d9565b6141f18184846141b4565b505050565b5b818110156142155761420a6000826141de565b6001810190506141f7565b5050565b601f82111561425a5761422b81613d28565b6142348461410f565b81016020851015614243578190505b61425761424f8561410f565b8301826141f6565b50505b505050565b600082821c905092915050565b600061427d6000198460080261425f565b1980831691505092915050565b6000614296838361426c565b9150826002028217905092915050565b6142af82612b23565b67ffffffffffffffff8111156142c8576142c7612fa4565b5b6142d282546131c1565b6142dd828285614219565b600060209050601f83116001811461431057600084156142fe578287015190505b614308858261428a565b865550614370565b601f19841661431e86613d28565b60005b8281101561434657848901518255600182019150602085019450602081019050614321565b86831015614363578489015161435f601f89168261426c565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b600061439f82614378565b6143a98185614383565b93506143b9818560208601612b3f565b6143c281612b69565b840191505092915050565b60006080820190506143e26000830187612c6a565b6143ef6020830186612c6a565b6143fc6040830185612d00565b818103606083015261440e8184614394565b905095945050505050565b60008151905061442881612a94565b92915050565b60006020828403121561444457614443612a5e565b5b600061445284828501614419565b9150509291505056fea26469706673582212204c2e17c319ae2391d524c3dd68857a4e56785240738274c3cc2a64b0d200f4db64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000e6bb1cb8c00f77451d8016028151a2615c46e435000000000000000000000000cac8219986bdf99ec18849f5414cfa04a135da96000000000000000000000000ee1f2cbecb8dcd3c2faac83d5601c6b448d2ce08000000000000000000000000e361364c3d3f67d0882aadd7576d01c2b5dd48c900000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000055000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f7777772e696d6d6f7274616c736e66742e78797a2f6170692f6d6574613f65646974696f6e3d000000000000000000000000000000000000