60806040526000600b556002600c55610dac600d553480156200002157600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600a81526020017f4d696c6b546865436f77000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4d494c4b455200000000000000000000000000000000000000000000000000008152508160029081620000b691906200064f565b508060039081620000c891906200064f565b50620000d9620002fe60201b60201c565b600081905550505060006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002d65780156200019c576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001629291906200077b565b600060405180830381600087803b1580156200017d57600080fd5b505af115801562000192573d6000803e3d6000fd5b50505050620002d5565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000256576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200021c9291906200077b565b600060405180830381600087803b1580156200023757600080fd5b505af11580156200024c573d6000803e3d6000fd5b50505050620002d4565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200029f9190620007a8565b600060405180830381600087803b158015620002ba57600080fd5b505af1158015620002cf573d6000803e3d6000fd5b505050505b5b5b5050620002f8620002ec6200030760201b60201c565b6200030f60201b60201c565b620007c5565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200045757607f821691505b6020821081036200046d576200046c6200040f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000498565b620004e3868362000498565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005306200052a6200052484620004fb565b62000505565b620004fb565b9050919050565b6000819050919050565b6200054c836200050f565b620005646200055b8262000537565b848454620004a5565b825550505050565b600090565b6200057b6200056c565b6200058881848462000541565b505050565b5b81811015620005b057620005a460008262000571565b6001810190506200058e565b5050565b601f821115620005ff57620005c98162000473565b620005d48462000488565b81016020851015620005e4578190505b620005fc620005f38562000488565b8301826200058d565b50505b505050565b600082821c905092915050565b6000620006246000198460080262000604565b1980831691505092915050565b60006200063f838362000611565b9150826002028217905092915050565b6200065a82620003d5565b67ffffffffffffffff811115620006765762000675620003e0565b5b6200068282546200043e565b6200068f828285620005b4565b600060209050601f831160018114620006c75760008415620006b2578287015190505b620006be858262000631565b8655506200072e565b601f198416620006d78662000473565b60005b828110156200070157848901518255600182019150602085019450602081019050620006da565b868310156200072157848901516200071d601f89168262000611565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007638262000736565b9050919050565b620007758162000756565b82525050565b60006040820190506200079260008301856200076a565b620007a160208301846200076a565b9392505050565b6000602082019050620007bf60008301846200076a565b92915050565b6138a680620007d56000396000f3fe6080604052600436106101cd5760003560e01c806370a08231116100f7578063a22cb46511610095578063e8874d4211610064578063e8874d4214610659578063e985e9c514610682578063f2fde38b146106bf578063f3592d7e146106e8576101cd565b8063a22cb465146105ae578063b88d4fde146105d7578063c87b56dd146105f3578063e758b5a614610630576101cd565b80638a109271116100d15780638a109271146105025780638da5cb5b1461052d57806395d89b4114610558578063a035b1fe14610583576101cd565b806370a0823114610485578063715018a6146104c257806379c9cb7b146104d9576101cd565b80632be905ba1161016f57806355f804b31161013e57806355f804b3146103b75780636352211e146103e057806364ab86751461041d5780636c0360eb1461045a576101cd565b80632be905ba146103175780632db115441461035457806341f434341461037057806342842e0e1461039b576101cd565b8063095ea7b3116101ab578063095ea7b31461027757806318160ddd1461029357806322ae7f7b146102be57806323b872dd146102fb576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612793565b610713565b60405161020691906127db565b60405180910390f35b34801561021b57600080fd5b506102246107a5565b6040516102319190612886565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c91906128de565b610837565b60405161026e919061294c565b60405180910390f35b610291600480360381019061028c9190612993565b6108b6565b005b34801561029f57600080fd5b506102a86109c0565b6040516102b591906129e2565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e091906129fd565b6109d7565b6040516102f291906127db565b60405180910390f35b61031560048036038101906103109190612a2a565b6109f7565b005b34801561032357600080fd5b5061033e600480360381019061033991906129fd565b610b47565b60405161034b91906129e2565b60405180910390f35b61036e600480360381019061036991906128de565b610b5f565b005b34801561037c57600080fd5b50610385610cae565b6040516103929190612adc565b60405180910390f35b6103b560048036038101906103b09190612a2a565b610cc0565b005b3480156103c357600080fd5b506103de60048036038101906103d99190612c2c565b610e10565b005b3480156103ec57600080fd5b50610407600480360381019061040291906128de565b610e2b565b604051610414919061294c565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f91906129fd565b610e3d565b60405161045191906129e2565b60405180910390f35b34801561046657600080fd5b5061046f610f20565b60405161047c9190612886565b60405180910390f35b34801561049157600080fd5b506104ac60048036038101906104a791906129fd565b610fae565b6040516104b991906129e2565b60405180910390f35b3480156104ce57600080fd5b506104d7611066565b005b3480156104e557600080fd5b5061050060048036038101906104fb91906128de565b61107a565b005b34801561050e57600080fd5b5061051761108c565b60405161052491906129e2565b60405180910390f35b34801561053957600080fd5b50610542611092565b60405161054f919061294c565b60405180910390f35b34801561056457600080fd5b5061056d6110bc565b60405161057a9190612886565b60405180910390f35b34801561058f57600080fd5b5061059861114e565b6040516105a591906129e2565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612ca1565b611154565b005b6105f160048036038101906105ec9190612d82565b61125e565b005b3480156105ff57600080fd5b5061061a600480360381019061061591906128de565b6113b1565b6040516106279190612886565b60405180910390f35b34801561063c57600080fd5b50610657600480360381019061065291906128de565b61144f565b005b34801561066557600080fd5b50610680600480360381019061067b91906128de565b611668565b005b34801561068e57600080fd5b506106a960048036038101906106a49190612e05565b6117f3565b6040516106b691906127db565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e191906129fd565b611887565b005b3480156106f457600080fd5b506106fd61190a565b60405161070a91906129e2565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061076e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061079e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546107b490612e74565b80601f01602080910402602001604051908101604052809291908181526020018280546107e090612e74565b801561082d5780601f106108025761010080835404028352916020019161082d565b820191906000526020600020905b81548152906001019060200180831161081057829003601f168201915b5050505050905090565b600061084282611910565b610878576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8160006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156109b1576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b815260040161092e929190612ea5565b602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190612ee3565b6109b057806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016109a7919061294c565b60405180910390fd5b5b6109bb838361196f565b505050565b60006109ca611ab3565b6001546000540303905090565b60096020528060005260406000206000915054906101000a900460ff1681565b8260006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610b35573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a6957610a64848484611abc565b610b41565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610ab2929190612ea5565b602060405180830381865afa158015610acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af39190612ee3565b610b3457336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610b2b919061294c565b60405180910390fd5b5b610b40848484611abc565b5b50505050565b600e6020528060005260406000206000915090505481565b600c54811115610ba4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9b90612f5c565b60405180910390fd5b600d5481610bb06109c0565b610bba9190612fab565b1115610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf29061302b565b60405180910390fd5b600b5481610c09919061304b565b341015610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c42906130d9565b60405180910390fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c9a9190612fab565b92505081905550610cab3382611dde565b50565b6daaeb6d7670e522a718067333cd4e81565b8260006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610dfe573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d3257610d2d848484611dfc565b610e0a565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610d7b929190612ea5565b602060405180830381865afa158015610d98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbc9190612ee3565b610dfd57336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610df4919061294c565b60405180910390fd5b5b610e09848484611dfc565b5b50505050565b610e18611e1c565b80600a9081610e27919061329b565b5050565b6000610e3682611e9a565b9050919050565b60008060115403610e515760009050610f1b565b600060115442610e61919061336d565b90506000611388600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610eb5576000610eb8565b60025b905060008282600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f08919061304b565b610f12919061304b565b90508093505050505b919050565b600a8054610f2d90612e74565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5990612e74565b8015610fa65780601f10610f7b57610100808354040283529160200191610fa6565b820191906000526020600020905b815481529060010190602001808311610f8957829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611015576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61106e611e1c565b6110786000611f66565b565b611082611e1c565b80600c8190555050565b600d5481565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546110cb90612e74565b80601f01602080910402602001604051908101604052809291908181526020018280546110f790612e74565b80156111445780601f1061111957610100808354040283529160200191611144565b820191906000526020600020905b81548152906001019060200180831161112757829003601f168201915b5050505050905090565b600b5481565b8160006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b111561124f576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016111cc929190612ea5565b602060405180830381865afa1580156111e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120d9190612ee3565b61124e57806040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401611245919061294c565b60405180910390fd5b5b611259838361202c565b505050565b8360006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b111561139d573373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d1576112cc85858585612137565b6113aa565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b815260040161131a929190612ea5565b602060405180830381865afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190612ee3565b61139c57336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401611393919061294c565b60405180910390fd5b5b6113a985858585612137565b5b5050505050565b60606113bc82611910565b6113f2576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113fc6121aa565b9050600081510361141c5760405180602001604052806000815250611447565b806114268461223c565b6040516020016114379291906133dd565b6040516020818303038152906040525b915050919050565b60008111611492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148990613473565b60405180910390fd5b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b90613505565b60405180910390fd5b62015180601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115629190612fab565b4210156115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90613571565b60405180910390fd5b60006115af33610e3d565b905081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611600919061336d565b9250508190555042601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806012600082825461165d9190612fab565b925050819055505050565b600081116116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a2906135dd565b60405180910390fd5b6116b433610fae565b8111156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed9061366f565b60405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117459190612fab565b9250508190555042601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611388600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156117e357506000601154145b156117f057426011819055505b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61188f611e1c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613701565b60405180910390fd5b61190781611f66565b50565b600c5481565b60008161191b611ab3565b1115801561192a575060005482105b8015611968575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600061197a82610e2b565b90508073ffffffffffffffffffffffffffffffffffffffff1661199b61228c565b73ffffffffffffffffffffffffffffffffffffffff16146119fe576119c7816119c261228c565b6117f3565b6119fd576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611ac782611e9a565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b2e576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b3a84612294565b91509150611b508187611b4b61228c565b6122bb565b611b9c57611b6586611b6061228c565b6117f3565b611b9b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c02576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c0f86868660016122ff565b8015611c1a57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550611ce885611cc4888887612305565b7c02000000000000000000000000000000000000000000000000000000001761232d565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603611d6e5760006001850190506000600460008381526020019081526020016000205403611d6c576000548114611d6b578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611dd68686866001612358565b505050505050565b611df882826040518060200160405280600081525061235e565b5050565b611e178383836040518060200160405280600081525061125e565b505050565b611e246123fb565b73ffffffffffffffffffffffffffffffffffffffff16611e42611092565b73ffffffffffffffffffffffffffffffffffffffff1614611e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8f9061376d565b60405180910390fd5b565b60008082905080611ea9611ab3565b11611f2f57600054811015611f2e5760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611f2c575b60008103611f22576004600083600190039350838152602001908152602001600020549050611ef8565b8092505050611f61565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806007600061203961228c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120e661228c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161212b91906127db565b60405180910390a35050565b6121428484846109f7565b60008373ffffffffffffffffffffffffffffffffffffffff163b146121a45761216d84848484612403565b6121a3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060600a80546121b990612e74565b80601f01602080910402602001604051908101604052809291908181526020018280546121e590612e74565b80156122325780601f1061220757610100808354040283529160200191612232565b820191906000526020600020905b81548152906001019060200180831161221557829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b60011561227757600184039350600a81066030018453600a8104905080612255575b50828103602084039350808452505050919050565b600033905090565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861231c868684612553565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b612368838361255c565b60008373ffffffffffffffffffffffffffffffffffffffff163b146123f657600080549050600083820390505b6123a86000868380600101945086612403565b6123de576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106123955781600054146123f357600080fd5b50505b505050565b600033905090565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261242961228c565b8786866040518563ffffffff1660e01b815260040161244b94939291906137e2565b6020604051808303816000875af192505050801561248757506040513d601f19601f820116820180604052508101906124849190613843565b60015b612500573d80600081146124b7576040519150601f19603f3d011682016040523d82523d6000602084013e6124bc565b606091505b5060008151036124f8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b6000805490506000820361259c576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125a960008483856122ff565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612620836126116000866000612305565b61261a85612717565b1761232d565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146126c157808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612686565b50600082036126fc576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506127126000848385612358565b505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127708161273b565b811461277b57600080fd5b50565b60008135905061278d81612767565b92915050565b6000602082840312156127a9576127a8612731565b5b60006127b78482850161277e565b91505092915050565b60008115159050919050565b6127d5816127c0565b82525050565b60006020820190506127f060008301846127cc565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612830578082015181840152602081019050612815565b60008484015250505050565b6000601f19601f8301169050919050565b6000612858826127f6565b6128628185612801565b9350612872818560208601612812565b61287b8161283c565b840191505092915050565b600060208201905081810360008301526128a0818461284d565b905092915050565b6000819050919050565b6128bb816128a8565b81146128c657600080fd5b50565b6000813590506128d8816128b2565b92915050565b6000602082840312156128f4576128f3612731565b5b6000612902848285016128c9565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129368261290b565b9050919050565b6129468161292b565b82525050565b6000602082019050612961600083018461293d565b92915050565b6129708161292b565b811461297b57600080fd5b50565b60008135905061298d81612967565b92915050565b600080604083850312156129aa576129a9612731565b5b60006129b88582860161297e565b92505060206129c9858286016128c9565b9150509250929050565b6129dc816128a8565b82525050565b60006020820190506129f760008301846129d3565b92915050565b600060208284031215612a1357612a12612731565b5b6000612a218482850161297e565b91505092915050565b600080600060608486031215612a4357612a42612731565b5b6000612a518682870161297e565b9350506020612a628682870161297e565b9250506040612a73868287016128c9565b9150509250925092565b6000819050919050565b6000612aa2612a9d612a988461290b565b612a7d565b61290b565b9050919050565b6000612ab482612a87565b9050919050565b6000612ac682612aa9565b9050919050565b612ad681612abb565b82525050565b6000602082019050612af16000830184612acd565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b398261283c565b810181811067ffffffffffffffff82111715612b5857612b57612b01565b5b80604052505050565b6000612b6b612727565b9050612b778282612b30565b919050565b600067ffffffffffffffff821115612b9757612b96612b01565b5b612ba08261283c565b9050602081019050919050565b82818337600083830152505050565b6000612bcf612bca84612b7c565b612b61565b905082815260208101848484011115612beb57612bea612afc565b5b612bf6848285612bad565b509392505050565b600082601f830112612c1357612c12612af7565b5b8135612c23848260208601612bbc565b91505092915050565b600060208284031215612c4257612c41612731565b5b600082013567ffffffffffffffff811115612c6057612c5f612736565b5b612c6c84828501612bfe565b91505092915050565b612c7e816127c0565b8114612c8957600080fd5b50565b600081359050612c9b81612c75565b92915050565b60008060408385031215612cb857612cb7612731565b5b6000612cc68582860161297e565b9250506020612cd785828601612c8c565b9150509250929050565b600067ffffffffffffffff821115612cfc57612cfb612b01565b5b612d058261283c565b9050602081019050919050565b6000612d25612d2084612ce1565b612b61565b905082815260208101848484011115612d4157612d40612afc565b5b612d4c848285612bad565b509392505050565b600082601f830112612d6957612d68612af7565b5b8135612d79848260208601612d12565b91505092915050565b60008060008060808587031215612d9c57612d9b612731565b5b6000612daa8782880161297e565b9450506020612dbb8782880161297e565b9350506040612dcc878288016128c9565b925050606085013567ffffffffffffffff811115612ded57612dec612736565b5b612df987828801612d54565b91505092959194509250565b60008060408385031215612e1c57612e1b612731565b5b6000612e2a8582860161297e565b9250506020612e3b8582860161297e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e8c57607f821691505b602082108103612e9f57612e9e612e45565b5b50919050565b6000604082019050612eba600083018561293d565b612ec7602083018461293d565b9392505050565b600081519050612edd81612c75565b92915050565b600060208284031215612ef957612ef8612731565b5b6000612f0784828501612ece565b91505092915050565b7f416c6c204d696c6b6564204f7574210000000000000000000000000000000000600082015250565b6000612f46600f83612801565b9150612f5182612f10565b602082019050919050565b60006020820190508181036000830152612f7581612f39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fb6826128a8565b9150612fc1836128a8565b9250828201905080821115612fd957612fd8612f7c565b5b92915050565b7f4e6f204d696c6b657273204c6566742100000000000000000000000000000000600082015250565b6000613015601083612801565b915061302082612fdf565b602082019050919050565b6000602082019050818103600083015261304481613008565b9050919050565b6000613056826128a8565b9150613061836128a8565b925082820261306f816128a8565b9150828204841483151761308657613085612f7c565b5b5092915050565b7f4e6f7420456e6f75676820436865646461210000000000000000000000000000600082015250565b60006130c3601283612801565b91506130ce8261308d565b602082019050919050565b600060208201905081810360008301526130f2816130b6565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261315b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261311e565b613165868361311e565b95508019841693508086168417925050509392505050565b600061319861319361318e846128a8565b612a7d565b6128a8565b9050919050565b6000819050919050565b6131b28361317d565b6131c66131be8261319f565b84845461312b565b825550505050565b600090565b6131db6131ce565b6131e68184846131a9565b505050565b5b8181101561320a576131ff6000826131d3565b6001810190506131ec565b5050565b601f82111561324f57613220816130f9565b6132298461310e565b81016020851015613238578190505b61324c6132448561310e565b8301826131eb565b50505b505050565b600082821c905092915050565b600061327260001984600802613254565b1980831691505092915050565b600061328b8383613261565b9150826002028217905092915050565b6132a4826127f6565b67ffffffffffffffff8111156132bd576132bc612b01565b5b6132c78254612e74565b6132d282828561320e565b600060209050601f83116001811461330557600084156132f3578287015190505b6132fd858261327f565b865550613365565b601f198416613313866130f9565b60005b8281101561333b57848901518255600182019150602085019450602081019050613316565b868310156133585784890151613354601f891682613261565b8355505b6001600288020188555050505b505050505050565b6000613378826128a8565b9150613383836128a8565b925082820390508181111561339b5761339a612f7c565b5b92915050565b600081905092915050565b60006133b7826127f6565b6133c181856133a1565b93506133d1818560208601612812565b80840191505092915050565b60006133e982856133ac565b91506133f582846133ac565b91508190509392505050565b7f4d757374207769746864726177206174206c6561737420736f6d65206d696c6b60008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061345d602783612801565b915061346882613401565b604082019050919050565b6000602082019050818103600083015261348c81613450565b9050919050565b7f43616e6e6f74207769746864726177206d6f7265206d696c6b20746f6b656e7360008201527f207468616e20796f75206f776e00000000000000000000000000000000000000602082015250565b60006134ef602d83612801565b91506134fa82613493565b604082019050919050565b6000602082019050818103600083015261351e816134e2565b9050919050565b7f43616e6e6f74207769746864726177206d696c6b20746f6b656e732079657400600082015250565b600061355b601f83612801565b915061356682613525565b602082019050919050565b6000602082019050818103600083015261358a8161354e565b9050919050565b7f4d757374206d696c6b206174206c6561737420736f6d6520746f6b656e730000600082015250565b60006135c7601e83612801565b91506135d282613591565b602082019050919050565b600060208201905081810360008301526135f6816135ba565b9050919050565b7f43616e6e6f74206d696c6b206d6f726520746f6b656e73207468616e20796f7560008201527f206f776e00000000000000000000000000000000000000000000000000000000602082015250565b6000613659602483612801565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006136eb602683612801565b91506136f68261368f565b604082019050919050565b6000602082019050818103600083015261371a816136de565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613757602083612801565b915061376282613721565b602082019050919050565b600060208201905081810360008301526137868161374a565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006137b48261378d565b6137be8185613798565b93506137ce818560208601612812565b6137d78161283c565b840191505092915050565b60006080820190506137f7600083018761293d565b613804602083018661293d565b61381160408301856129d3565b818103606083015261382381846137a9565b905095945050505050565b60008151905061383d81612767565b92915050565b60006020828403121561385957613858612731565b5b60006138678482850161382e565b9150509291505056fea264697066735822122097e5127fdaeae5ff093995f5ab586819886ff003a30adfd50d1f41965efff8ec64736f6c63430008130033