60806040523480156200001157600080fd5b5060405162004a1238038062004a128339818101604052810190620000379190620006f7565b733cc6cdda760b79bafa08df41ecfa224f810dceb66001826040518060400160405280600581526020017f56455253450000000000000000000000000000000000000000000000000000008152508782600090805190602001906200009e92919062000445565b508160019080519060200190620000b792919062000445565b508060079080519060200190620000d092919062000445565b50505050620000f4620000e86200037760201b60201c565b6200037f60201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002e9578015620001af576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b815260040162000175929190620007b8565b600060405180830381600087803b1580156200019057600080fd5b505af1158015620001a5573d6000803e3d6000fd5b50505050620002e8565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000269576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200022f929190620007b8565b600060405180830381600087803b1580156200024a57600080fd5b505af11580156200025f573d6000803e3d6000fd5b50505050620002e7565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620002b29190620007e5565b600060405180830381600087803b158015620002cd57600080fd5b505af1158015620002e2573d6000803e3d6000fd5b505050505b5b5b505082600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000866565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620004539062000831565b90600052602060002090601f016020900481019282620004775760008555620004c3565b82601f106200049257805160ff1916838001178555620004c3565b82800160010185558215620004c3579182015b82811115620004c2578251825591602001919060010190620004a5565b5b509050620004d29190620004d6565b5090565b5b80821115620004f1576000816000905550600101620004d7565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200055e8262000513565b810181811067ffffffffffffffff8211171562000580576200057f62000524565b5b80604052505050565b600062000595620004f5565b9050620005a3828262000553565b919050565b600067ffffffffffffffff821115620005c657620005c562000524565b5b620005d18262000513565b9050602081019050919050565b60005b83811015620005fe578082015181840152602081019050620005e1565b838111156200060e576000848401525b50505050565b60006200062b6200062584620005a8565b62000589565b9050828152602081018484840111156200064a57620006496200050e565b5b62000657848285620005de565b509392505050565b600082601f83011262000677576200067662000509565b5b81516200068984826020860162000614565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006bf8262000692565b9050919050565b620006d181620006b2565b8114620006dd57600080fd5b50565b600081519050620006f181620006c6565b92915050565b60008060008060808587031215620007145762000713620004ff565b5b600085015167ffffffffffffffff81111562000735576200073462000504565b5b62000743878288016200065f565b94505060206200075687828801620006e0565b93505060406200076987828801620006e0565b925050606085015167ffffffffffffffff8111156200078d576200078c62000504565b5b6200079b878288016200065f565b91505092959194509250565b620007b281620006b2565b82525050565b6000604082019050620007cf6000830185620007a7565b620007de6020830184620007a7565b9392505050565b6000602082019050620007fc6000830184620007a7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200084a57607f821691505b60208210810362000860576200085f62000802565b5b50919050565b61419c80620008766000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a5780639e426399116100ad578063d0414c9d1161007c578063d0414c9d146105e8578063d28d885214610606578063e2c7f33814610624578063e985e9c514610640578063f2fde38b1461067057610206565b80639e42639914610564578063a22cb46514610580578063b88d4fde1461059c578063c87b56dd146105b857610206565b80638d2bb093116100e95780638d2bb093146104dc5780638da5cb5b146104f857806395d89b4114610516578063992924a61461053457610206565b806370a0823114610456578063715018a6146104865780637d1bbf7b1461049057806382295a2d146104c057610206565b8063337648b21161019d57806342842e0e1161016c57806342842e0e146103a057806358884432146103bc5780636352211e146103da5780636c52c3fb1461040a5780636ebcf6071461042657610206565b8063337648b21461032c5780633a330022146103485780633e63eb2a1461036457806341f434341461038257610206565b8063095ea7b3116101d9578063095ea7b3146102a557806318160ddd146102c157806323b872dd146102df5780632a55205a146102fb57610206565b806301ffc9a71461020b57806302fe53051461023b57806306fdde0314610257578063081812fc14610275575b600080fd5b610225600480360381019061022091906128a9565b61068c565b60405161023291906128f1565b60405180910390f35b61025560048036038101906102509190612a52565b61069e565b005b61025f610704565b60405161026c9190612b23565b60405180910390f35b61028f600480360381019061028a9190612b7b565b610796565b60405161029c9190612be9565b60405180910390f35b6102bf60048036038101906102ba9190612c30565b6107dc565b005b6102c96107f5565b6040516102d69190612c7f565b60405180910390f35b6102f960048036038101906102f49190612c9a565b6107fb565b005b61031560048036038101906103109190612ced565b61084a565b604051610323929190612d2d565b60405180910390f35b61034660048036038101906103419190612eff565b61091b565b005b610362600480360381019061035d9190612f77565b610a39565b005b61036c610a85565b6040516103799190612b23565b60405180910390f35b61038a610b13565b6040516103979190613003565b60405180910390f35b6103ba60048036038101906103b59190612c9a565b610b25565b005b6103c4610b74565b6040516103d19190612be9565b60405180910390f35b6103f460048036038101906103ef9190612b7b565b610b9a565b6040516104019190612be9565b60405180910390f35b610424600480360381019061041f9190612f77565b610c20565b005b610440600480360381019061043b9190612f77565b610c6c565b60405161044d9190612c7f565b60405180910390f35b610470600480360381019061046b9190612f77565b610c84565b60405161047d9190612c7f565b60405180910390f35b61048e610d3b565b005b6104aa60048036038101906104a59190612b7b565b610d4f565b6040516104b79190612b23565b60405180910390f35b6104da60048036038101906104d5919061301e565b610def565b005b6104f660048036038101906104f1919061307a565b610e75565b005b610500611146565b60405161050d9190612be9565b60405180910390f35b61051e611170565b60405161052b9190612b23565b60405180910390f35b61054e60048036038101906105499190612b7b565b611202565b60405161055b9190612be9565b60405180910390f35b61057e600480360381019061057991906131e6565b611235565b005b61059a600480360381019061059591906132f3565b611364565b005b6105b660048036038101906105b191906133d4565b61137d565b005b6105d260048036038101906105cd9190612b7b565b6113ce565b6040516105df9190612b23565b60405180910390f35b6105f06113e0565b6040516105fd9190612be9565b60405180910390f35b61060e611406565b60405161061b9190612b23565b60405180910390f35b61063e60048036038101906106399190613457565b611494565b005b61065a600480360381019061065591906134aa565b6114ac565b60405161066791906128f1565b60405180910390f35b61068a60048036038101906106859190612f77565b611540565b005b6000610697826115c3565b9050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f857600080fd5b6107018161163d565b50565b60606000805461071390613519565b80601f016020809104026020016040519081016040528092919081815260200182805461073f90613519565b801561078c5780601f106107615761010080835404028352916020019161078c565b820191906000526020600020905b81548152906001019060200180831161076f57829003601f168201915b5050505050905090565b60006107a182611657565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b816107e6816116a2565b6107f0838361179f565b505050565b600a5481565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461083957610838336116a2565b5b6108448484846118b6565b50505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905080600001519250612710816020015162ffffff16856109079190613579565b6109119190613602565b9150509250929050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461097557600080fd5b80518251146109b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b09061367f565b60405180910390fd5b60005b8251811015610a34578181815181106109d8576109d761369f565b5b6020026020010151600660008584815181106109f7576109f661369f565b5b602002602001015181526020019081526020016000209080519060200190610a2092919061279a565b508080610a2c906136ce565b9150506109bc565b505050565b610a41611916565b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60078054610a9290613519565b80601f0160208091040260200160405190810160405280929190818152602001828054610abe90613519565b8015610b0b5780601f10610ae057610100808354040283529160200191610b0b565b820191906000526020600020905b815481529060010190602001808311610aee57829003601f168201915b505050505081565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b6357610b62336116a2565b5b610b6e848484611994565b50505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ba6836119b4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e90613762565b60405180910390fd5b80915050919050565b610c28611916565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60036020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb906137f4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d43611916565b610d4d60006119f1565b565b60066020528060005260406000206000915090508054610d6e90613519565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90613519565b8015610de75780601f10610dbc57610100808354040283529160200191610de7565b820191906000526020600020905b815481529060010190602001808311610dca57829003601f168201915b505050505081565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e4957600080fd5b80600660008481526020019081526020016000209080519060200190610e7092919061279a565b505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecf57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590613860565b60405180910390fd5b610f4784611ab7565b15610f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7e906138cc565b60405180910390fd5b6001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610fd791906138ec565b925050819055506001600a6000828254610ff191906138ec565b92505081905550846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260066000868152602001908152602001600020908051906020019061107192919061279a565b50600081111561108757611086848383611af8565b5b838673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461117f90613519565b80601f01602080910402602001604051908101604052809291908181526020018280546111ab90613519565b80156111f85780601f106111cd576101008083540402835291602001916111f8565b820191906000526020600020905b8154815290600101906020018083116111db57829003601f168201915b5050505050905090565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461128f57600080fd5b855184511480156112a1575082518451145b6112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d79061398e565b60405180910390fd5b60005b845181101561135b57611348868883815181106113035761130261369f565b5b602002602001015187848151811061131e5761131d61369f565b5b60200260200101518785815181106113395761133861369f565b5b60200260200101518787610e75565b8080611353906136ce565b9150506112e3565b50505050505050565b8161136e816116a2565b6113788383611bf4565b505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113bb576113ba336116a2565b5b6113c785858585611c0a565b5050505050565b60606113d982611c6c565b9050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000805461141390613519565b80601f016020809104026020016040519081016040528092919081815260200182805461143f90613519565b801561148c5780601f106114615761010080835404028352916020019161148c565b820191906000526020600020905b81548152906001019060200180831161146f57829003601f168201915b505050505081565b61149c611916565b6114a7838383611af8565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611548611916565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90613a20565b60405180910390fd5b6115c0816119f1565b50565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611636575061163582611d61565b5b9050919050565b806007908051906020019061165392919061279a565b5050565b61166081611ab7565b61169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613762565b60405180910390fd5b50565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b111561179c576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b8152600401611719929190613a40565b602060405180830381865afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190613a7e565b61179b57806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016117929190612be9565b60405180910390fd5b5b50565b60006117aa82610b9a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190613b1d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611839611e43565b73ffffffffffffffffffffffffffffffffffffffff161480611868575061186781611862611e43565b6114ac565b5b6118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90613baf565b60405180910390fd5b6118b18383611e4b565b505050565b6118c76118c1611e43565b82611f04565b611906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fd90613c41565b60405180910390fd5b611911838383611f99565b505050565b61191e611e43565b73ffffffffffffffffffffffffffffffffffffffff1661193c611146565b73ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613cad565b60405180910390fd5b565b6119af8383836040518060200160405280600081525061137d565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff16611ad9836119b4565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b612710811115611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613d19565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff168152506009600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548162ffffff021916908362ffffff160217905550905050505050565b611c06611bff611e43565b8383612292565b5050565b611c1b611c15611e43565b83611f04565b611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190613c41565b60405180910390fd5b611c66848484846123fe565b50505050565b6060611c7782611657565b600060078054611c8690613519565b80601f0160208091040260200160405190810160405280929190818152602001828054611cb290613519565b8015611cff5780601f10611cd457610100808354040283529160200191611cff565b820191906000526020600020905b815481529060010190602001808311611ce257829003601f168201915b505050505090506000815111611d245760405180602001604052806000815250611d59565b8060066000858152602001908152602001600020604051602001611d49929190613e09565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e2c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e3c5750611e3b8261245a565b5b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ebe83610b9a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611f1083610b9a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f525750611f5181856114ac565b5b80611f9057508373ffffffffffffffffffffffffffffffffffffffff16611f7884610796565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611fb982610b9a565b73ffffffffffffffffffffffffffffffffffffffff161461200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200690613e9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207590613f31565b60405180910390fd5b61208b83838360016124c4565b8273ffffffffffffffffffffffffffffffffffffffff166120ab82610b9a565b73ffffffffffffffffffffffffffffffffffffffff1614612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890613e9f565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461228d83838360016125ea565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f790613f9d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123f191906128f1565b60405180910390a3505050565b612409848484611f99565b612415848484846125f0565b612454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244b9061402f565b60405180910390fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60018111156125e457600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146125585780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612550919061404f565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125e35780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125db91906138ec565b925050819055505b5b50505050565b50505050565b60006126118473ffffffffffffffffffffffffffffffffffffffff16612777565b1561276a578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261263a611e43565b8786866040518563ffffffff1660e01b815260040161265c94939291906140d8565b6020604051808303816000875af192505050801561269857506040513d601f19601f820116820180604052508101906126959190614139565b60015b61271a573d80600081146126c8576040519150601f19603f3d011682016040523d82523d6000602084013e6126cd565b606091505b506000815103612712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127099061402f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061276f565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546127a690613519565b90600052602060002090601f0160209004810192826127c8576000855561280f565b82601f106127e157805160ff191683800117855561280f565b8280016001018555821561280f579182015b8281111561280e5782518255916020019190600101906127f3565b5b50905061281c9190612820565b5090565b5b80821115612839576000816000905550600101612821565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61288681612851565b811461289157600080fd5b50565b6000813590506128a38161287d565b92915050565b6000602082840312156128bf576128be612847565b5b60006128cd84828501612894565b91505092915050565b60008115159050919050565b6128eb816128d6565b82525050565b600060208201905061290660008301846128e2565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61295f82612916565b810181811067ffffffffffffffff8211171561297e5761297d612927565b5b80604052505050565b600061299161283d565b905061299d8282612956565b919050565b600067ffffffffffffffff8211156129bd576129bc612927565b5b6129c682612916565b9050602081019050919050565b82818337600083830152505050565b60006129f56129f0846129a2565b612987565b905082815260208101848484011115612a1157612a10612911565b5b612a1c8482856129d3565b509392505050565b600082601f830112612a3957612a3861290c565b5b8135612a498482602086016129e2565b91505092915050565b600060208284031215612a6857612a67612847565b5b600082013567ffffffffffffffff811115612a8657612a8561284c565b5b612a9284828501612a24565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ad5578082015181840152602081019050612aba565b83811115612ae4576000848401525b50505050565b6000612af582612a9b565b612aff8185612aa6565b9350612b0f818560208601612ab7565b612b1881612916565b840191505092915050565b60006020820190508181036000830152612b3d8184612aea565b905092915050565b6000819050919050565b612b5881612b45565b8114612b6357600080fd5b50565b600081359050612b7581612b4f565b92915050565b600060208284031215612b9157612b90612847565b5b6000612b9f84828501612b66565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bd382612ba8565b9050919050565b612be381612bc8565b82525050565b6000602082019050612bfe6000830184612bda565b92915050565b612c0d81612bc8565b8114612c1857600080fd5b50565b600081359050612c2a81612c04565b92915050565b60008060408385031215612c4757612c46612847565b5b6000612c5585828601612c1b565b9250506020612c6685828601612b66565b9150509250929050565b612c7981612b45565b82525050565b6000602082019050612c946000830184612c70565b92915050565b600080600060608486031215612cb357612cb2612847565b5b6000612cc186828701612c1b565b9350506020612cd286828701612c1b565b9250506040612ce386828701612b66565b9150509250925092565b60008060408385031215612d0457612d03612847565b5b6000612d1285828601612b66565b9250506020612d2385828601612b66565b9150509250929050565b6000604082019050612d426000830185612bda565b612d4f6020830184612c70565b9392505050565b600067ffffffffffffffff821115612d7157612d70612927565b5b602082029050602081019050919050565b600080fd5b6000612d9a612d9584612d56565b612987565b90508083825260208201905060208402830185811115612dbd57612dbc612d82565b5b835b81811015612de65780612dd28882612b66565b845260208401935050602081019050612dbf565b5050509392505050565b600082601f830112612e0557612e0461290c565b5b8135612e15848260208601612d87565b91505092915050565b600067ffffffffffffffff821115612e3957612e38612927565b5b602082029050602081019050919050565b6000612e5d612e5884612e1e565b612987565b90508083825260208201905060208402830185811115612e8057612e7f612d82565b5b835b81811015612ec757803567ffffffffffffffff811115612ea557612ea461290c565b5b808601612eb28982612a24565b85526020850194505050602081019050612e82565b5050509392505050565b600082601f830112612ee657612ee561290c565b5b8135612ef6848260208601612e4a565b91505092915050565b60008060408385031215612f1657612f15612847565b5b600083013567ffffffffffffffff811115612f3457612f3361284c565b5b612f4085828601612df0565b925050602083013567ffffffffffffffff811115612f6157612f6061284c565b5b612f6d85828601612ed1565b9150509250929050565b600060208284031215612f8d57612f8c612847565b5b6000612f9b84828501612c1b565b91505092915050565b6000819050919050565b6000612fc9612fc4612fbf84612ba8565b612fa4565b612ba8565b9050919050565b6000612fdb82612fae565b9050919050565b6000612fed82612fd0565b9050919050565b612ffd81612fe2565b82525050565b60006020820190506130186000830184612ff4565b92915050565b6000806040838503121561303557613034612847565b5b600061304385828601612b66565b925050602083013567ffffffffffffffff8111156130645761306361284c565b5b61307085828601612a24565b9150509250929050565b60008060008060008060c0878903121561309757613096612847565b5b60006130a589828a01612c1b565b96505060206130b689828a01612c1b565b95505060406130c789828a01612b66565b945050606087013567ffffffffffffffff8111156130e8576130e761284c565b5b6130f489828a01612a24565b935050608061310589828a01612c1b565b92505060a061311689828a01612b66565b9150509295509295509295565b600067ffffffffffffffff82111561313e5761313d612927565b5b602082029050602081019050919050565b600061316261315d84613123565b612987565b9050808382526020820190506020840283018581111561318557613184612d82565b5b835b818110156131ae578061319a8882612c1b565b845260208401935050602081019050613187565b5050509392505050565b600082601f8301126131cd576131cc61290c565b5b81356131dd84826020860161314f565b91505092915050565b60008060008060008060c0878903121561320357613202612847565b5b600087013567ffffffffffffffff8111156132215761322061284c565b5b61322d89828a016131b8565b965050602061323e89828a01612c1b565b955050604087013567ffffffffffffffff81111561325f5761325e61284c565b5b61326b89828a01612df0565b945050606087013567ffffffffffffffff81111561328c5761328b61284c565b5b61329889828a01612ed1565b93505060806132a989828a01612c1b565b92505060a06132ba89828a01612b66565b9150509295509295509295565b6132d0816128d6565b81146132db57600080fd5b50565b6000813590506132ed816132c7565b92915050565b6000806040838503121561330a57613309612847565b5b600061331885828601612c1b565b9250506020613329858286016132de565b9150509250929050565b600067ffffffffffffffff82111561334e5761334d612927565b5b61335782612916565b9050602081019050919050565b600061337761337284613333565b612987565b90508281526020810184848401111561339357613392612911565b5b61339e8482856129d3565b509392505050565b600082601f8301126133bb576133ba61290c565b5b81356133cb848260208601613364565b91505092915050565b600080600080608085870312156133ee576133ed612847565b5b60006133fc87828801612c1b565b945050602061340d87828801612c1b565b935050604061341e87828801612b66565b925050606085013567ffffffffffffffff81111561343f5761343e61284c565b5b61344b878288016133a6565b91505092959194509250565b6000806000606084860312156134705761346f612847565b5b600061347e86828701612b66565b935050602061348f86828701612c1b565b92505060406134a086828701612b66565b9150509250925092565b600080604083850312156134c1576134c0612847565b5b60006134cf85828601612c1b565b92505060206134e085828601612c1b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061353157607f821691505b602082108103613544576135436134ea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358482612b45565b915061358f83612b45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135c8576135c761354a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061360d82612b45565b915061361883612b45565b925082613628576136276135d3565b5b828204905092915050565b7f455243313135353a20417272617973206c656e677468206d69736d6174636800600082015250565b6000613669601f83612aa6565b915061367482613633565b602082019050919050565b600060208201905081810360008301526136988161365c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006136d982612b45565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361370b5761370a61354a565b5b600182019050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b600061374c601883612aa6565b915061375782613716565b602082019050919050565b6000602082019050818103600083015261377b8161373f565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006137de602983612aa6565b91506137e982613782565b604082019050919050565b6000602082019050818103600083015261380d816137d1565b9050919050565b7f6d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b600061384a601883612aa6565b915061385582613814565b602082019050919050565b600060208201905081810360008301526138798161383d565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006138b6601c83612aa6565b91506138c182613880565b602082019050919050565b600060208201905081810360008301526138e5816138a9565b9050919050565b60006138f782612b45565b915061390283612b45565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139375761393661354a565b5b828201905092915050565b7f417272617973206c656e677468206d69736d6174636800000000000000000000600082015250565b6000613978601683612aa6565b915061398382613942565b602082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a0a602683612aa6565b9150613a15826139ae565b604082019050919050565b60006020820190508181036000830152613a39816139fd565b9050919050565b6000604082019050613a556000830185612bda565b613a626020830184612bda565b9392505050565b600081519050613a78816132c7565b92915050565b600060208284031215613a9457613a93612847565b5b6000613aa284828501613a69565b91505092915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b07602183612aa6565b9150613b1282613aab565b604082019050919050565b60006020820190508181036000830152613b3681613afa565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613b99603d83612aa6565b9150613ba482613b3d565b604082019050919050565b60006020820190508181036000830152613bc881613b8c565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613c2b602d83612aa6565b9150613c3682613bcf565b604082019050919050565b60006020820190508181036000830152613c5a81613c1e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c97602083612aa6565b9150613ca282613c61565b602082019050919050565b60006020820190508181036000830152613cc681613c8a565b9050919050565b7f45524332393831526f79616c746965733a20546f6f2068696768000000000000600082015250565b6000613d03601a83612aa6565b9150613d0e82613ccd565b602082019050919050565b60006020820190508181036000830152613d3281613cf6565b9050919050565b600081905092915050565b6000613d4f82612a9b565b613d598185613d39565b9350613d69818560208601612ab7565b80840191505092915050565b60008190508160005260206000209050919050565b60008154613d9781613519565b613da18186613d39565b94506001821660008114613dbc5760018114613dcd57613e00565b60ff19831686528186019350613e00565b613dd685613d75565b60005b83811015613df857815481890152600182019150602081019050613dd9565b838801955050505b50505092915050565b6000613e158285613d44565b9150613e218284613d8a565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613e89602583612aa6565b9150613e9482613e2d565b604082019050919050565b60006020820190508181036000830152613eb881613e7c565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f1b602483612aa6565b9150613f2682613ebf565b604082019050919050565b60006020820190508181036000830152613f4a81613f0e565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613f87601983612aa6565b9150613f9282613f51565b602082019050919050565b60006020820190508181036000830152613fb681613f7a565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614019603283612aa6565b915061402482613fbd565b604082019050919050565b600060208201905081810360008301526140488161400c565b9050919050565b600061405a82612b45565b915061406583612b45565b9250828210156140785761407761354a565b5b828203905092915050565b600081519050919050565b600082825260208201905092915050565b60006140aa82614083565b6140b4818561408e565b93506140c4818560208601612ab7565b6140cd81612916565b840191505092915050565b60006080820190506140ed6000830187612bda565b6140fa6020830186612bda565b6141076040830185612c70565b8181036060830152614119818461409f565b905095945050505050565b6000815190506141338161287d565b92915050565b60006020828403121561414f5761414e612847565b5b600061415d84828501614124565b9150509291505056fea264697066735822122055d79e382d32c920b872b8a54477136de4107c58507a4cadaa3a80b94f81353564736f6c634300080d00330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e445fb0297f7d1f507df708185946210eb6a9de60000000000000000000000001bfe7452477accc0188c34b3a4e8e3b15bf671b000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000007697066733a2f2f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017436861696e206279204c65616e646572204865727a6f67000000000000000000