60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000519291906200041b565b506032600e55613a98600f55661ff973cafa80006010553480156200007557600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb6600160405180606001604052806021815260200162004b40602191396040518060400160405280600581526020017f4d494d534d0000000000000000000000000000000000000000000000000000008152508160029080519060200190620000f59291906200041b565b5080600390805190602001906200010e9291906200041b565b506200011f6200034460201b60201c565b6000819055505050620001476200013b6200034d60201b60201c565b6200035560201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200033c57801562000202576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001c892919062000510565b600060405180830381600087803b158015620001e357600080fd5b505af1158015620001f8573d6000803e3d6000fd5b505050506200033b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002bc576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200028292919062000510565b600060405180830381600087803b1580156200029d57600080fd5b505af1158015620002b2573d6000803e3d6000fd5b505050506200033a565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200030591906200053d565b600060405180830381600087803b1580156200032057600080fd5b505af115801562000335573d6000803e3d6000fd5b505050505b5b5b5050620005be565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620004299062000589565b90600052602060002090601f0160209004810192826200044d576000855562000499565b82601f106200046857805160ff191683800117855562000499565b8280016001018555821562000499579182015b82811115620004985782518255916020019190600101906200047b565b5b509050620004a89190620004ac565b5090565b5b80821115620004c7576000816000905550600101620004ad565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004f882620004cb565b9050919050565b6200050a81620004eb565b82525050565b6000604082019050620005276000830185620004ff565b620005366020830184620004ff565b9392505050565b6000602082019050620005546000830184620004ff565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005a257607f821691505b602082108103620005b857620005b76200055a565b5b50919050565b61457280620005ce6000396000f3fe6080604052600436106102465760003560e01c806370a0823111610139578063ba9e12f7116100b6578063d5abeb011161007a578063d5abeb0114610824578063da3ef23f1461084f578063e985e9c514610878578063ee82e5a0146108b5578063f2fde38b146108de578063f968adbe1461090757610246565b8063ba9e12f71461073f578063bc3371821461076a578063bc63f02e14610793578063c6682862146107bc578063c87b56dd146107e757610246565b806391b7f5ed116100fd57806391b7f5ed1461067d57806395d89b41146106a6578063a0712d68146106d1578063a22cb465146106ed578063b88d4fde1461071657610246565b806370a08231146105b9578063715018a6146105f65780637bc9200e1461060d5780637cb64759146106295780638da5cb5b1461065257610246565b8063375a069a116101c757806355f804b31161018b57806355f804b3146104d45780635a7adf7f146104fd5780636352211e146105285780636c0360eb146105655780636f8b44b01461059057610246565b8063375a069a146104175780633ccfd60b1461044057806342842e0e14610457578063512507c61461048057806351830227146104a957610246565b806318160ddd1161020e57806318160ddd1461034457806323b872dd1461036f5780632a3f300c146103985780632eb4a7ab146103c157806333bc1c5c146103ec57610246565b806301ffc9a71461024b57806306fdde0314610288578063081812fc146102b3578063095ea7b3146102f057806313faede614610319575b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906131c0565b610932565b60405161027f9190613208565b60405180910390f35b34801561029457600080fd5b5061029d610a14565b6040516102aa91906132bc565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190613314565b610aa6565b6040516102e79190613382565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906133c9565b610b22565b005b34801561032557600080fd5b5061032e610c2c565b60405161033b9190613418565b60405180910390f35b34801561035057600080fd5b50610359610c32565b6040516103669190613418565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613433565b610c49565b005b3480156103a457600080fd5b506103bf60048036038101906103ba91906134b2565b610d55565b005b3480156103cd57600080fd5b506103d6610d7a565b6040516103e391906134f8565b60405180910390f35b3480156103f857600080fd5b50610401610d80565b60405161040e9190613208565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613314565b610d93565b005b34801561044c57600080fd5b50610455610e48565b005b34801561046357600080fd5b5061047e60048036038101906104799190613433565b610e9f565b005b34801561048c57600080fd5b506104a760048036038101906104a29190613648565b610fab565b005b3480156104b557600080fd5b506104be610fcd565b6040516104cb9190613208565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613648565b610fe0565b005b34801561050957600080fd5b50610512611002565b60405161051f9190613208565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613314565b611015565b60405161055c9190613382565b60405180910390f35b34801561057157600080fd5b5061057a61102b565b60405161058791906132bc565b60405180910390f35b34801561059c57600080fd5b506105b760048036038101906105b29190613314565b6110b9565b005b3480156105c557600080fd5b506105e060048036038101906105db9190613691565b6110cb565b6040516105ed9190613418565b60405180910390f35b34801561060257600080fd5b5061060b61119a565b005b6106276004803603810190610622919061371e565b6111ae565b005b34801561063557600080fd5b50610650600480360381019061064b91906137aa565b6113fa565b005b34801561065e57600080fd5b5061066761140c565b6040516106749190613382565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190613314565b611436565b005b3480156106b257600080fd5b506106bb611448565b6040516106c891906132bc565b60405180910390f35b6106eb60048036038101906106e69190613314565b6114da565b005b3480156106f957600080fd5b50610714600480360381019061070f91906137d7565b611667565b005b34801561072257600080fd5b5061073d600480360381019061073891906138b8565b6117de565b005b34801561074b57600080fd5b506107546118ec565b60405161076191906132bc565b60405180910390f35b34801561077657600080fd5b50610791600480360381019061078c9190613314565b61197a565b005b34801561079f57600080fd5b506107ba60048036038101906107b5919061393b565b61198c565b005b3480156107c857600080fd5b506107d1611a42565b6040516107de91906132bc565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613314565b611ad0565b60405161081b91906132bc565b60405180910390f35b34801561083057600080fd5b50610839611c21565b6040516108469190613418565b60405180910390f35b34801561085b57600080fd5b5061087660048036038101906108719190613648565b611c27565b005b34801561088457600080fd5b5061089f600480360381019061089a919061397b565b611c49565b6040516108ac9190613208565b60405180910390f35b3480156108c157600080fd5b506108dc60048036038101906108d791906139bb565b611cdd565b005b3480156108ea57600080fd5b5061090560048036038101906109009190613691565b611d1d565b005b34801561091357600080fd5b5061091c611da0565b6040516109299190613418565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109fd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a0d5750610a0c82611da6565b5b9050919050565b606060028054610a2390613a2a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4f90613a2a565b8015610a9c5780601f10610a7157610100808354040283529160200191610a9c565b820191906000526020600020905b815481529060010190602001808311610a7f57829003601f168201915b5050505050905090565b6000610ab182611e10565b610ae7576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b2d82611015565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b94576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610bb3611e5e565b73ffffffffffffffffffffffffffffffffffffffff1614158015610be55750610be381610bde611e5e565b611c49565b155b15610c1c576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c27838383611e66565b505050565b60105481565b6000610c3c611f18565b6001546000540303905090565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610d45576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610cc0929190613a5b565b6020604051808303816000875af1158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190613a99565b610d4457336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610d3b9190613382565b60405180910390fd5b5b610d50838383611f21565b505050565b610d5d611f31565b80600c60026101000a81548160ff02191690831515021790555050565b600d5481565b600c60009054906101000a900460ff1681565b610d9b611f31565b6000610da5610c32565b905060008211610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190613b38565b60405180910390fd5b600f548282610df99190613b87565b1115610e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3190613c29565b60405180910390fd5b610e443383611faf565b5050565b610e50611f31565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e9b573d6000803e3d6000fd5b5050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610f9b576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610f16929190613a5b565b6020604051808303816000875af1158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190613a99565b610f9a57336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610f919190613382565b60405180910390fd5b5b610fa6838383611fcd565b505050565b610fb3611f31565b8060099080519060200190610fc992919061306e565b5050565b600c60029054906101000a900460ff1681565b610fe8611f31565b80600a9080519060200190610ffe92919061306e565b5050565b600c60019054906101000a900460ff1681565b600061102082611fed565b600001519050919050565b600a805461103890613a2a565b80601f016020809104026020016040519081016040528092919081815260200182805461106490613a2a565b80156110b15780601f10611086576101008083540402835291602001916110b1565b820191906000526020600020905b81548152906001019060200180831161109457829003601f168201915b505050505081565b6110c1611f31565b80600f8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611132576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6111a2611f31565b6111ac600061227c565b565b82600081116111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990613b38565b60405180910390fd5b600f54816111fe610c32565b6112089190613b87565b1115611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090613c95565b60405180910390fd5b600e5481111561128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128590613d01565b60405180910390fd5b8060105461129c9190613d21565b3410156112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590613dc7565b60405180910390fd5b82826000336040516020016112f39190613e2f565b604051602081830303815290604052805190602001209050611359838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600d5483612342565b611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613e96565b60405180910390fd5b600c60019054906101000a900460ff166113e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113de90613f02565b60405180910390fd5b6113f13388611faf565b50505050505050565b611402611f31565b80600d8190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61143e611f31565b8060108190555050565b60606003805461145790613a2a565b80601f016020809104026020016040519081016040528092919081815260200182805461148390613a2a565b80156114d05780601f106114a5576101008083540402835291602001916114d0565b820191906000526020600020905b8154815290600101906020018083116114b357829003601f168201915b5050505050905090565b806000811161151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151590613b38565b60405180910390fd5b600f548161152a610c32565b6115349190613b87565b1115611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90613c95565b60405180910390fd5b600e548111156115ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b190613d01565b60405180910390fd5b806010546115c89190613d21565b34101561160a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160190613dc7565b60405180910390fd5b600c60009054906101000a900460ff16611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090613f6e565b60405180910390fd5b6116633383611faf565b5050565b61166f611e5e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d3576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006116e0611e5e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661178d611e5e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117d29190613208565b60405180910390a35050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156118da576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401611855929190613a5b565b6020604051808303816000875af1158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190613a99565b6118d957336040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016118d09190613382565b60405180910390fd5b5b6118e684848484612359565b50505050565b600980546118f990613a2a565b80601f016020809104026020016040519081016040528092919081815260200182805461192590613a2a565b80156119725780601f1061194757610100808354040283529160200191611972565b820191906000526020600020905b81548152906001019060200180831161195557829003601f168201915b505050505081565b611982611f31565b80600e8190555050565b611994611f31565b600061199e610c32565b9050600083116119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119da90614000565b60405180910390fd5b600f5483826119f29190613b87565b1115611a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2a9061406c565b60405180910390fd5b611a3d8284611faf565b505050565b600b8054611a4f90613a2a565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7b90613a2a565b8015611ac85780601f10611a9d57610100808354040283529160200191611ac8565b820191906000526020600020905b815481529060010190602001808311611aab57829003601f168201915b505050505081565b6060611adb82611e10565b611b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b11906140fe565b60405180910390fd5b600c60029054906101000a900460ff16611bc05760098054611b3b90613a2a565b80601f0160208091040260200160405190810160405280929190818152602001828054611b6790613a2a565b8015611bb45780601f10611b8957610100808354040283529160200191611bb4565b820191906000526020600020905b815481529060010190602001808311611b9757829003601f168201915b50505050509050611c1c565b6000611bca6123d5565b90506000815111611bea5760405180602001604052806000815250611c18565b80611bf484612467565b600b604051602001611c08939291906141ee565b6040516020818303038152906040525b9150505b919050565b600f5481565b611c2f611f31565b80600b9080519060200190611c4592919061306e565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611ce5611f31565b81600c60016101000a81548160ff02191690831515021790555080600c60006101000a81548160ff0219169083151502179055505050565b611d25611f31565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8b90614291565b60405180910390fd5b611d9d8161227c565b50565b600e5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611e1b611f18565b11158015611e2a575060005482105b8015611e57575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b611f2c8383836125c7565b505050565b611f39611e5e565b73ffffffffffffffffffffffffffffffffffffffff16611f5761140c565b73ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906142fd565b60405180910390fd5b565b611fc9828260405180602001604052806000815250612a7b565b5050565b611fe8838383604051806020016040528060008152506117de565b505050565b611ff56130f4565b600082905080612003611f18565b11158015612012575060005481105b15612245576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161224357600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612127578092505050612277565b5b60011561224257818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461223d578092505050612277565b612128565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008261234f8584612a8d565b1490509392505050565b6123648484846125c7565b6123838373ffffffffffffffffffffffffffffffffffffffff16612ae3565b8015612398575061239684848484612b06565b155b156123cf576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060600a80546123e490613a2a565b80601f016020809104026020016040519081016040528092919081815260200182805461241090613a2a565b801561245d5780601f106124325761010080835404028352916020019161245d565b820191906000526020600020905b81548152906001019060200180831161244057829003601f168201915b5050505050905090565b6060600082036124ae576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506125c2565b600082905060005b600082146124e05780806124c99061431d565b915050600a826124d99190614394565b91506124b6565b60008167ffffffffffffffff8111156124fc576124fb61351d565b5b6040519080825280601f01601f19166020018201604052801561252e5781602001600182028036833780820191505090505b5090505b600085146125bb5760018261254791906143c5565b9150600a8561255691906143f9565b60306125629190613b87565b60f81b8183815181106125785761257761442a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856125b49190614394565b9450612532565b8093505050505b919050565b60006125d282611fed565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461263d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1661265e611e5e565b73ffffffffffffffffffffffffffffffffffffffff16148061268d575061268c85612687611e5e565b611c49565b5b806126d2575061269b611e5e565b73ffffffffffffffffffffffffffffffffffffffff166126ba84610aa6565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061270b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612771576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61277e8585856001612c56565b61278a60008487611e66565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612a09576000548214612a0857878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a748585856001612c5c565b5050505050565b612a888383836001612c62565b505050565b60008082905060005b8451811015612ad857612ac382868381518110612ab657612ab561442a565b5b602002602001015161302c565b91508080612ad09061431d565b915050612a96565b508091505092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b2c611e5e565b8786866040518563ffffffff1660e01b8152600401612b4e94939291906144ae565b6020604051808303816000875af1925050508015612b8a57506040513d601f19601f82011682018060405250810190612b87919061450f565b60015b612c03573d8060008114612bba576040519150601f19603f3d011682016040523d82523d6000602084013e612bbf565b606091505b506000815103612bfb576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612cce576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612d08576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d156000868387612c56565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612edf5750612ede8773ffffffffffffffffffffffffffffffffffffffff16612ae3565b5b15612fa4575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f546000888480600101955088612b06565b612f8a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808203612ee5578260005414612f9f57600080fd5b61300f565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4808203612fa5575b8160008190555050506130256000868387612c5c565b5050505050565b60008183106130445761303f8284613057565b61304f565b61304e8383613057565b5b905092915050565b600082600052816020526040600020905092915050565b82805461307a90613a2a565b90600052602060002090601f01602090048101928261309c57600085556130e3565b82601f106130b557805160ff19168380011785556130e3565b828001600101855582156130e3579182015b828111156130e25782518255916020019190600101906130c7565b5b5090506130f09190613137565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613150576000816000905550600101613138565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61319d81613168565b81146131a857600080fd5b50565b6000813590506131ba81613194565b92915050565b6000602082840312156131d6576131d561315e565b5b60006131e4848285016131ab565b91505092915050565b60008115159050919050565b613202816131ed565b82525050565b600060208201905061321d60008301846131f9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561325d578082015181840152602081019050613242565b8381111561326c576000848401525b50505050565b6000601f19601f8301169050919050565b600061328e82613223565b613298818561322e565b93506132a881856020860161323f565b6132b181613272565b840191505092915050565b600060208201905081810360008301526132d68184613283565b905092915050565b6000819050919050565b6132f1816132de565b81146132fc57600080fd5b50565b60008135905061330e816132e8565b92915050565b60006020828403121561332a5761332961315e565b5b6000613338848285016132ff565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061336c82613341565b9050919050565b61337c81613361565b82525050565b60006020820190506133976000830184613373565b92915050565b6133a681613361565b81146133b157600080fd5b50565b6000813590506133c38161339d565b92915050565b600080604083850312156133e0576133df61315e565b5b60006133ee858286016133b4565b92505060206133ff858286016132ff565b9150509250929050565b613412816132de565b82525050565b600060208201905061342d6000830184613409565b92915050565b60008060006060848603121561344c5761344b61315e565b5b600061345a868287016133b4565b935050602061346b868287016133b4565b925050604061347c868287016132ff565b9150509250925092565b61348f816131ed565b811461349a57600080fd5b50565b6000813590506134ac81613486565b92915050565b6000602082840312156134c8576134c761315e565b5b60006134d68482850161349d565b91505092915050565b6000819050919050565b6134f2816134df565b82525050565b600060208201905061350d60008301846134e9565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61355582613272565b810181811067ffffffffffffffff821117156135745761357361351d565b5b80604052505050565b6000613587613154565b9050613593828261354c565b919050565b600067ffffffffffffffff8211156135b3576135b261351d565b5b6135bc82613272565b9050602081019050919050565b82818337600083830152505050565b60006135eb6135e684613598565b61357d565b90508281526020810184848401111561360757613606613518565b5b6136128482856135c9565b509392505050565b600082601f83011261362f5761362e613513565b5b813561363f8482602086016135d8565b91505092915050565b60006020828403121561365e5761365d61315e565b5b600082013567ffffffffffffffff81111561367c5761367b613163565b5b6136888482850161361a565b91505092915050565b6000602082840312156136a7576136a661315e565b5b60006136b5848285016133b4565b91505092915050565b600080fd5b600080fd5b60008083601f8401126136de576136dd613513565b5b8235905067ffffffffffffffff8111156136fb576136fa6136be565b5b602083019150836020820283011115613717576137166136c3565b5b9250929050565b6000806000604084860312156137375761373661315e565b5b6000613745868287016132ff565b935050602084013567ffffffffffffffff81111561376657613765613163565b5b613772868287016136c8565b92509250509250925092565b613787816134df565b811461379257600080fd5b50565b6000813590506137a48161377e565b92915050565b6000602082840312156137c0576137bf61315e565b5b60006137ce84828501613795565b91505092915050565b600080604083850312156137ee576137ed61315e565b5b60006137fc858286016133b4565b925050602061380d8582860161349d565b9150509250929050565b600067ffffffffffffffff8211156138325761383161351d565b5b61383b82613272565b9050602081019050919050565b600061385b61385684613817565b61357d565b90508281526020810184848401111561387757613876613518565b5b6138828482856135c9565b509392505050565b600082601f83011261389f5761389e613513565b5b81356138af848260208601613848565b91505092915050565b600080600080608085870312156138d2576138d161315e565b5b60006138e0878288016133b4565b94505060206138f1878288016133b4565b9350506040613902878288016132ff565b925050606085013567ffffffffffffffff81111561392357613922613163565b5b61392f8782880161388a565b91505092959194509250565b600080604083850312156139525761395161315e565b5b6000613960858286016132ff565b9250506020613971858286016133b4565b9150509250929050565b600080604083850312156139925761399161315e565b5b60006139a0858286016133b4565b92505060206139b1858286016133b4565b9150509250929050565b600080604083850312156139d2576139d161315e565b5b60006139e08582860161349d565b92505060206139f18582860161349d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a4257607f821691505b602082108103613a5557613a546139fb565b5b50919050565b6000604082019050613a706000830185613373565b613a7d6020830184613373565b9392505050565b600081519050613a9381613486565b92915050565b600060208284031215613aaf57613aae61315e565b5b6000613abd84828501613a84565b91505092915050565b7f5175616e74697479206d75737420626520686967686572207468616e207a657260008201527f6f21000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b2260228361322e565b9150613b2d82613ac6565b604082019050919050565b60006020820190508181036000830152613b5181613b15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b92826132de565b9150613b9d836132de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613bd257613bd1613b58565b5b828201905092915050565b7f4d617820737570706c7920726561636865642100000000000000000000000000600082015250565b6000613c1360138361322e565b9150613c1e82613bdd565b602082019050919050565b60006020820190508181036000830152613c4281613c06565b9050919050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b6000613c7f60128361322e565b9150613c8a82613c49565b602082019050919050565b60006020820190508181036000830152613cae81613c72565b9050919050565b7f4c696d6974207065722074782065786365656421000000000000000000000000600082015250565b6000613ceb60148361322e565b9150613cf682613cb5565b602082019050919050565b60006020820190508181036000830152613d1a81613cde565b9050919050565b6000613d2c826132de565b9150613d37836132de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d7057613d6f613b58565b5b828202905092915050565b7f4e6f7420656e6f75676820657468657221000000000000000000000000000000600082015250565b6000613db160118361322e565b9150613dbc82613d7b565b602082019050919050565b60006020820190508181036000830152613de081613da4565b9050919050565b60008160601b9050919050565b6000613dff82613de7565b9050919050565b6000613e1182613df4565b9050919050565b613e29613e2482613361565b613e06565b82525050565b6000613e3b8284613e18565b60148201915081905092915050565b7f496e76616c69642070726f6f6621000000000000000000000000000000000000600082015250565b6000613e80600e8361322e565b9150613e8b82613e4a565b602082019050919050565b60006020820190508181036000830152613eaf81613e73565b9050919050565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b6000613eec60178361322e565b9150613ef782613eb6565b602082019050919050565b60006020820190508181036000830152613f1b81613edf565b9050919050565b7f546865207075626c69632073616c65206973206e6f7420656e61626c65642100600082015250565b6000613f58601f8361322e565b9150613f6382613f22565b602082019050919050565b60006020820190508181036000830152613f8781613f4b565b9050919050565b7f5175616e74697479204d75737420426520486967686572205468616e205a657260008201527f6f21000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fea60228361322e565b9150613ff582613f8e565b604082019050919050565b6000602082019050818103600083015261401981613fdd565b9050919050565b7f4d617820537570706c7920526561636865642100000000000000000000000000600082015250565b600061405660138361322e565b915061406182614020565b602082019050919050565b6000602082019050818103600083015261408581614049565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006140e8602f8361322e565b91506140f38261408c565b604082019050919050565b60006020820190508181036000830152614117816140db565b9050919050565b600081905092915050565b600061413482613223565b61413e818561411e565b935061414e81856020860161323f565b80840191505092915050565b60008190508160005260206000209050919050565b6000815461417c81613a2a565b614186818661411e565b945060018216600081146141a157600181146141b2576141e5565b60ff198316865281860193506141e5565b6141bb8561415a565b60005b838110156141dd578154818901526001820191506020810190506141be565b838801955050505b50505092915050565b60006141fa8286614129565b91506142068285614129565b9150614212828461416f565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061427b60268361322e565b91506142868261421f565b604082019050919050565b600060208201905081810360008301526142aa8161426e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006142e760208361322e565b91506142f2826142b1565b602082019050919050565b60006020820190508181036000830152614316816142da565b9050919050565b6000614328826132de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361435a57614359613b58565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061439f826132de565b91506143aa836132de565b9250826143ba576143b9614365565b5b828204905092915050565b60006143d0826132de565b91506143db836132de565b9250828210156143ee576143ed613b58565b5b828203905092915050565b6000614404826132de565b915061440f836132de565b92508261441f5761441e614365565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061448082614459565b61448a8185614464565b935061449a81856020860161323f565b6144a381613272565b840191505092915050565b60006080820190506144c36000830187613373565b6144d06020830186613373565b6144dd6040830185613409565b81810360608301526144ef8184614475565b905095945050505050565b60008151905061450981613194565b92915050565b6000602082840312156145255761452461315e565b5b6000614533848285016144fa565b9150509291505056fea2646970667358221220bd2abc33a1bfa875686f5967a432e9fa877120b179ea2f54abd193837d3e801864736f6c634300080d00334d6167696320496e7465726e6574204d6f6e657920536c6f74204d616368696e65