0x6101606040523480156200001257600080fd5b506040518060400160405280600581526020017f444641484a000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f444641484a0000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641444a000000000000000000000000000000000000000000000000000000008152508160039081620000fd919062000b25565b5080600490816200010f919062000b25565b50505062000132620001266200023260201b60201c565b6200023a60201b60201c565b6200014d600a836200030060201b62000f651790919060201c565b610120818152505062000170600b826200030060201b62000f651790919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a08181525050620001af6200035d60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506200022c3362000202620003ba60201b60201c565b600a62000210919062000d9c565b62024fdb62000220919062000ded565b620003c360201b60201c565b6200118f565b600033905090565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060208351101562000326576200031e836200053060201b60201c565b905062000357565b826200033d836200059d60201b62000fa91760201c565b60000190816200034e919062000b25565b5060ff60001b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200039f95949392919062000ea9565b60405160208183030381529060405280519060200120905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042c9062000f67565b60405180910390fd5b6200044960008383620005a760201b60201c565b80600260008282546200045d919062000f89565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000510919062000fc4565b60405180910390a36200052c60008383620005c460201b60201c565b5050565b600080829050601f815111156200058057826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016200057791906200105f565b60405180910390fd5b8051816200058e90620010b5565b60001c1760001b915050919050565b6000819050919050565b620005bf838383620005c960201b62000fb31760201c565b505050565b505050565b620005e1838383620006c260201b6200106b1760201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200063d576200062782620006c760201b60201c565b620006376200072a60201b60201c565b620006bd565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000699576200068383620006c760201b60201c565b620006936200072a60201b60201c565b620006bc565b620006aa83620006c760201b60201c565b620006bb82620006c760201b60201c565b5b5b505050565b505050565b62000727600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206200071b836200074e60201b60201c565b6200079660201b60201c565b50565b6200074c6006620007406200082260201b60201c565b6200079660201b60201c565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000620007a86200082c60201b60201c565b905080620007bf846000016200084a60201b60201c565b10156200081d5782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b6000600254905090565b60006200084560086200089d60201b620010701760201c565b905090565b60008082805490500362000862576000905062000898565b816001838054905062000876919062001125565b815481106200088a576200088962001160565b5b906000526020600020015490505b919050565b600081600001549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200092d57607f821691505b602082108103620009435762000942620008e5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200096e565b620009b986836200096e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a0662000a00620009fa84620009d1565b620009db565b620009d1565b9050919050565b6000819050919050565b62000a2283620009e5565b62000a3a62000a318262000a0d565b8484546200097b565b825550505050565b600090565b62000a5162000a42565b62000a5e81848462000a17565b505050565b5b8181101562000a865762000a7a60008262000a47565b60018101905062000a64565b5050565b601f82111562000ad55762000a9f8162000949565b62000aaa846200095e565b8101602085101562000aba578190505b62000ad262000ac9856200095e565b83018262000a63565b50505b505050565b600082821c905092915050565b600062000afa6000198460080262000ada565b1980831691505092915050565b600062000b15838362000ae7565b9150826002028217905092915050565b62000b3082620008ab565b67ffffffffffffffff81111562000b4c5762000b4b620008b6565b5b62000b58825462000914565b62000b6582828562000a8a565b600060209050601f83116001811462000b9d576000841562000b88578287015190505b62000b94858262000b07565b86555062000c04565b601f19841662000bad8662000949565b60005b8281101562000bd75784890151825560018201915060208501945060208101905062000bb0565b8683101562000bf7578489015162000bf3601f89168262000ae7565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000c9a5780860481111562000c725762000c7162000c0c565b5b600185161562000c825780820291505b808102905062000c928562000c3b565b945062000c52565b94509492505050565b60008262000cb5576001905062000d88565b8162000cc5576000905062000d88565b816001811462000cde576002811462000ce95762000d1f565b600191505062000d88565b60ff84111562000cfe5762000cfd62000c0c565b5b8360020a91508482111562000d185762000d1762000c0c565b5b5062000d88565b5060208310610133831016604e8410600b841016171562000d595782820a90508381111562000d535762000d5262000c0c565b5b62000d88565b62000d68848484600162000c48565b9250905081840481111562000d825762000d8162000c0c565b5b81810290505b9392505050565b600060ff82169050919050565b600062000da982620009d1565b915062000db68362000d8f565b925062000de57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ca3565b905092915050565b600062000dfa82620009d1565b915062000e0783620009d1565b925082820262000e1781620009d1565b9150828204841483151762000e315762000e3062000c0c565b5b5092915050565b6000819050919050565b62000e4d8162000e38565b82525050565b62000e5e81620009d1565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e918262000e64565b9050919050565b62000ea38162000e84565b82525050565b600060a08201905062000ec0600083018862000e42565b62000ecf602083018762000e42565b62000ede604083018662000e42565b62000eed606083018562000e53565b62000efc608083018462000e98565b9695505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f4f601f8362000f06565b915062000f5c8262000f17565b602082019050919050565b6000602082019050818103600083015262000f828162000f40565b9050919050565b600062000f9682620009d1565b915062000fa383620009d1565b925082820190508082111562000fbe5762000fbd62000c0c565b5b92915050565b600060208201905062000fdb600083018462000e53565b92915050565b60005b838110156200100157808201518184015260208101905062000fe4565b60008484015250505050565b6000601f19601f8301169050919050565b60006200102b82620008ab565b62001037818562000f06565b93506200104981856020860162000fe1565b62001054816200100d565b840191505092915050565b600060208201905081810360008301526200107b81846200101e565b905092915050565b600081519050919050565b6000819050602082019050919050565b6000620010ac825162000e38565b80915050919050565b6000620010c28262001083565b82620010ce846200108e565b9050620010db816200109e565b925060208210156200111e57620011197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026200096e565b831692505b5050919050565b60006200113282620009d1565b91506200113f83620009d1565b92508282039050818111156200115a576200115962000c0c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60805160a05160c05160e051610100516101205161014051613d11620011ea6000396000610a4201526000610a0e01526000611e4401526000611e2301526000611555015260006115ab015260006115d40152613d116000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063715018a6116100de578063981b24d011610097578063d505accf11610071578063d505accf14610490578063d9d98ce4146104ac578063dd62ed3e146104dc578063f2fde38b1461050c57610173565b8063981b24d014610400578063a457c2d714610430578063a9059cbb1461046057610173565b8063715018a61461035c5780637ecebe001461036657806384b0196e146103965780638da5cb5b146103ba57806395d89b41146103d85780639711715a146103f657610173565b80633950935111610130578063395093511461025057806340c10f19146102805780634ee2cd7e1461029c5780635cffe9de146102cc578063613255ab146102fc57806370a082311461032c57610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e4578063313ce567146102145780633644e51514610232575b600080fd5b610180610528565b60405161018d919061246a565b60405180910390f35b6101b060048036038101906101ab919061252a565b6105ba565b6040516101bd9190612585565b60405180910390f35b6101ce6105dd565b6040516101db91906125af565b60405180910390f35b6101fe60048036038101906101f991906125ca565b6105e7565b60405161020b9190612585565b60405180910390f35b61021c610616565b6040516102299190612639565b60405180910390f35b61023a61061f565b604051610247919061266d565b60405180910390f35b61026a6004803603810190610265919061252a565b61062e565b6040516102779190612585565b60405180910390f35b61029a6004803603810190610295919061252a565b610665565b005b6102b660048036038101906102b1919061252a565b61067b565b6040516102c391906125af565b60405180910390f35b6102e660048036038101906102e1919061272b565b6106eb565b6040516102f39190612585565b60405180910390f35b610316600480360381019061031191906127b3565b6108d8565b60405161032391906125af565b60405180910390f35b610346600480360381019061034191906127b3565b61094f565b60405161035391906125af565b60405180910390f35b610364610997565b005b610380600480360381019061037b91906127b3565b6109ab565b60405161038d91906125af565b60405180910390f35b61039e6109fb565b6040516103b197969594939291906128e8565b60405180910390f35b6103c2610afd565b6040516103cf919061296c565b60405180910390f35b6103e0610b27565b6040516103ed919061246a565b60405180910390f35b6103fe610bb9565b005b61041a60048036038101906104159190612987565b610bcc565b60405161042791906125af565b60405180910390f35b61044a6004803603810190610445919061252a565b610bfd565b6040516104579190612585565b60405180910390f35b61047a6004803603810190610475919061252a565b610c74565b6040516104879190612585565b60405180910390f35b6104aa60048036038101906104a59190612a0c565b610c97565b005b6104c660048036038101906104c1919061252a565b610dd9565b6040516104d391906125af565b60405180910390f35b6104f660048036038101906104f19190612aae565b610e5b565b60405161050391906125af565b60405180910390f35b610526600480360381019061052191906127b3565b610ee2565b005b60606003805461053790612b1d565b80601f016020809104026020016040519081016040528092919081815260200182805461056390612b1d565b80156105b05780601f10610585576101008083540402835291602001916105b0565b820191906000526020600020905b81548152906001019060200180831161059357829003601f168201915b5050505050905090565b6000806105c561107e565b90506105d2818585611086565b600191505092915050565b6000600254905090565b6000806105f261107e565b90506105ff85828561124f565b61060a8585856112db565b60019150509392505050565b60006012905090565b6000610629611551565b905090565b60008061063961107e565b905061065a81858561064b8589610e5b565b6106559190612b7d565b611086565b600191505092915050565b61066d611608565b6106778282611686565b5050565b60008060006106c884600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206117dc565b91509150816106df576106da8561094f565b6106e1565b805b9250505092915050565b60006106f6856108d8565b841115610738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072f90612c23565b60405180910390fd5b60006107448686610dd9565b90506107508786611686565b7f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd98773ffffffffffffffffffffffffffffffffffffffff166323e30c8b338989868a8a6040518763ffffffff1660e01b81526004016107b496959493929190612c90565b6020604051808303816000875af11580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190612d01565b14610837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082e90612da0565b60405180910390fd5b60006108416118d1565b9050610859883084896108549190612b7d565b61124f565b60008214806108945750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156108b3576108ae8883886108a99190612b7d565b6118d6565b6108c9565b6108bd88876118d6565b6108c88882846112db565b5b60019250505095945050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610914576000610948565b61091c6105dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109479190612dc0565b5b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61099f611608565b6109a96000611aa3565b565b60006109f4600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611070565b9050919050565b600060608060008060006060610a3b600a7f0000000000000000000000000000000000000000000000000000000000000000611b6990919063ffffffff16565b610a6f600b7f0000000000000000000000000000000000000000000000000000000000000000611b6990919063ffffffff16565b46306000801b600067ffffffffffffffff811115610a9057610a8f612df4565b5b604051908082528060200260200182016040528015610abe5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b3690612b1d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6290612b1d565b8015610baf5780601f10610b8457610100808354040283529160200191610baf565b820191906000526020600020905b815481529060010190602001808311610b9257829003601f168201915b5050505050905090565b610bc1611608565b610bc9611c19565b50565b6000806000610bdc8460066117dc565b9150915081610bf257610bed6105dd565b610bf4565b805b92505050919050565b600080610c0861107e565b90506000610c168286610e5b565b905083811015610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5290612e95565b60405180910390fd5b610c688286868403611086565b60019250505092915050565b600080610c7f61107e565b9050610c8c8185856112db565b600191505092915050565b83421115610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190612f01565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610d098c611c6f565b89604051602001610d1f96959493929190612f21565b6040516020818303038152906040528051906020012090506000610d4282611ccd565b90506000610d5282878787611ce7565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990612fce565b60405180910390fd5b610dcd8a8a8a611086565b50505050505050505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061303a565b60405180910390fd5b610e538383611d12565b905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eea611608565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f50906130cc565b60405180910390fd5b610f6281611aa3565b50565b6000602083511015610f8157610f7a83611d1a565b9050610fa3565b82610f8b83610fa9565b6000019081610f9a9190613298565b5060ff60001b90505b92915050565b6000819050919050565b610fbe83838361106b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361100857610ffb82611d82565b611003611dd5565b611066565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110525761104583611d82565b61104d611dd5565b611065565b61105b83611d82565b61106482611d82565b5b5b505050565b505050565b600081600001549050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec906133dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b9061346e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161124291906125af565b60405180910390a3505050565b600061125b8484610e5b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112d557818110156112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be906134da565b60405180910390fd5b6112d48484848403611086565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113419061356c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b0906135fe565b60405180910390fd5b6113c4838383611de9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190613690565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161153891906125af565b60405180910390a361154b848484611df9565b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156115cd57507f000000000000000000000000000000000000000000000000000000000000000046145b156115fa577f00000000000000000000000000000000000000000000000000000000000000009050611605565b611602611dfe565b90505b90565b61161061107e565b73ffffffffffffffffffffffffffffffffffffffff1661162e610afd565b73ffffffffffffffffffffffffffffffffffffffff1614611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906136fc565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec90613768565b60405180910390fd5b61170160008383611de9565b80600260008282546117139190612b7d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117c491906125af565b60405180910390a36117d860008383611df9565b5050565b60008060008411611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906137d4565b60405180910390fd5b61182a611e94565b84111561186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613840565b60405180910390fd5b60006118848585600001611ea590919063ffffffff16565b9050836000018054905081036118a15760008092509250506118ca565b60018460010182815481106118b9576118b8613860565b5b906000526020600020015492509250505b9250929050565b600090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611945576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193c90613901565b60405180910390fd5b61195182600083611de9565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90613993565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a8a91906125af565b60405180910390a3611a9e83600084611df9565b505050565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b606060ff60001b8314611b8657611b7f83611f5e565b9050611c13565b818054611b9290612b1d565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbe90612b1d565b8015611c0b5780601f10611be057610100808354040283529160200191611c0b565b820191906000526020600020905b815481529060010190602001808311611bee57829003601f168201915b505050505090505b92915050565b6000611c256008611fd2565b6000611c2f611e94565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051611c6091906125af565b60405180910390a18091505090565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611cbc81611070565b9150611cc781611fd2565b50919050565b6000611ce0611cda611551565b83611fe8565b9050919050565b6000806000611cf887878787612029565b91509150611d058161210b565b8192505050949350505050565b600092915050565b600080829050601f81511115611d6757826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401611d5e919061246a565b60405180910390fd5b805181611d73906139e3565b60001c1760001b915050919050565b611dd2600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611dcd8361094f565b612271565b50565b611de76006611de26105dd565b612271565b565b611df4838383610fb3565b505050565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611e79959493929190613a4a565b60405160208183030381529060405280519060200120905090565b6000611ea06008611070565b905090565b600080838054905003611ebb5760009050611f58565b600080848054905090505b80821015611f0f576000611eda83836122ec565b905084611ee78783612312565b600001541115611ef957809150611f09565b600181611f069190612b7d565b92505b50611ec6565b600082118015611f37575083611f3186600185611f2c9190612dc0565b612312565b60000154145b15611f5257600182611f499190612dc0565b92505050611f58565b81925050505b92915050565b60606000611f6b83612334565b90506000602067ffffffffffffffff811115611f8a57611f89612df4565b5b6040519080825280601f01601f191660200182016040528015611fbc5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b6001816000016000828254019250508190555050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612064576000600391509150612102565b6000600187878787604051600081526020016040526040516120899493929190613a9d565b6020604051602081039080840390855afa1580156120ab573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f957600060019250925050612102565b80600092509250505b94509492505050565b6000600481111561211f5761211e613ae2565b5b81600481111561213257612131613ae2565b5b031561226e576001600481111561214c5761214b613ae2565b5b81600481111561215f5761215e613ae2565b5b0361219f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219690613b5d565b60405180910390fd5b600260048111156121b3576121b2613ae2565b5b8160048111156121c6576121c5613ae2565b5b03612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd90613bc9565b60405180910390fd5b6003600481111561221a57612219613ae2565b5b81600481111561222d5761222c613ae2565b5b0361226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613c5b565b60405180910390fd5b5b50565b600061227b611e94565b90508061228a84600001612384565b10156122e75782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b600060028284186122fd9190613caa565b82841661230a9190612b7d565b905092915050565b6000808360005282602060002001905061232b816123d0565b91505092915050565b60008060ff8360001c169050601f81111561237b576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b60008082805490500361239a57600090506123cb565b81600183805490506123ac9190612dc0565b815481106123bd576123bc613860565b5b906000526020600020015490505b919050565b6000819050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124145780820151818401526020810190506123f9565b60008484015250505050565b6000601f19601f8301169050919050565b600061243c826123da565b61244681856123e5565b93506124568185602086016123f6565b61245f81612420565b840191505092915050565b600060208201905081810360008301526124848184612431565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124c182612496565b9050919050565b6124d1816124b6565b81146124dc57600080fd5b50565b6000813590506124ee816124c8565b92915050565b6000819050919050565b612507816124f4565b811461251257600080fd5b50565b600081359050612524816124fe565b92915050565b600080604083850312156125415761254061248c565b5b600061254f858286016124df565b925050602061256085828601612515565b9150509250929050565b60008115159050919050565b61257f8161256a565b82525050565b600060208201905061259a6000830184612576565b92915050565b6125a9816124f4565b82525050565b60006020820190506125c460008301846125a0565b92915050565b6000806000606084860312156125e3576125e261248c565b5b60006125f1868287016124df565b9350506020612602868287016124df565b925050604061261386828701612515565b9150509250925092565b600060ff82169050919050565b6126338161261d565b82525050565b600060208201905061264e600083018461262a565b92915050565b6000819050919050565b61266781612654565b82525050565b6000602082019050612682600083018461265e565b92915050565b6000612693826124b6565b9050919050565b6126a381612688565b81146126ae57600080fd5b50565b6000813590506126c08161269a565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126eb576126ea6126c6565b5b8235905067ffffffffffffffff811115612708576127076126cb565b5b602083019150836001820283011115612724576127236126d0565b5b9250929050565b6000806000806000608086880312156127475761274661248c565b5b6000612755888289016126b1565b9550506020612766888289016124df565b945050604061277788828901612515565b935050606086013567ffffffffffffffff81111561279857612797612491565b5b6127a4888289016126d5565b92509250509295509295909350565b6000602082840312156127c9576127c861248c565b5b60006127d7848285016124df565b91505092915050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612815816127e0565b82525050565b612824816124b6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61285f816124f4565b82525050565b60006128718383612856565b60208301905092915050565b6000602082019050919050565b60006128958261282a565b61289f8185612835565b93506128aa83612846565b8060005b838110156128db5781516128c28882612865565b97506128cd8361287d565b9250506001810190506128ae565b5085935050505092915050565b600060e0820190506128fd600083018a61280c565b818103602083015261290f8189612431565b905081810360408301526129238188612431565b905061293260608301876125a0565b61293f608083018661281b565b61294c60a083018561265e565b81810360c083015261295e818461288a565b905098975050505050505050565b6000602082019050612981600083018461281b565b92915050565b60006020828403121561299d5761299c61248c565b5b60006129ab84828501612515565b91505092915050565b6129bd8161261d565b81146129c857600080fd5b50565b6000813590506129da816129b4565b92915050565b6129e981612654565b81146129f457600080fd5b50565b600081359050612a06816129e0565b92915050565b600080600080600080600060e0888a031215612a2b57612a2a61248c565b5b6000612a398a828b016124df565b9750506020612a4a8a828b016124df565b9650506040612a5b8a828b01612515565b9550506060612a6c8a828b01612515565b9450506080612a7d8a828b016129cb565b93505060a0612a8e8a828b016129f7565b92505060c0612a9f8a828b016129f7565b91505092959891949750929550565b60008060408385031215612ac557612ac461248c565b5b6000612ad3858286016124df565b9250506020612ae4858286016124df565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b3557607f821691505b602082108103612b4857612b47612aee565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b88826124f4565b9150612b93836124f4565b9250828201905080821115612bab57612baa612b4e565b5b92915050565b7f4552433230466c6173684d696e743a20616d6f756e742065786365656473206d60008201527f6178466c6173684c6f616e000000000000000000000000000000000000000000602082015250565b6000612c0d602b836123e5565b9150612c1882612bb1565b604082019050919050565b60006020820190508181036000830152612c3c81612c00565b9050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000612c6f8385612c43565b9350612c7c838584612c54565b612c8583612420565b840190509392505050565b600060a082019050612ca5600083018961281b565b612cb2602083018861281b565b612cbf60408301876125a0565b612ccc60608301866125a0565b8181036080830152612cdf818486612c63565b9050979650505050505050565b600081519050612cfb816129e0565b92915050565b600060208284031215612d1757612d1661248c565b5b6000612d2584828501612cec565b91505092915050565b7f4552433230466c6173684d696e743a20696e76616c69642072657475726e207660008201527f616c756500000000000000000000000000000000000000000000000000000000602082015250565b6000612d8a6024836123e5565b9150612d9582612d2e565b604082019050919050565b60006020820190508181036000830152612db981612d7d565b9050919050565b6000612dcb826124f4565b9150612dd6836124f4565b9250828203905081811115612dee57612ded612b4e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e7f6025836123e5565b9150612e8a82612e23565b604082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000612eeb601d836123e5565b9150612ef682612eb5565b602082019050919050565b60006020820190508181036000830152612f1a81612ede565b9050919050565b600060c082019050612f36600083018961265e565b612f43602083018861281b565b612f50604083018761281b565b612f5d60608301866125a0565b612f6a60808301856125a0565b612f7760a08301846125a0565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000612fb8601e836123e5565b9150612fc382612f82565b602082019050919050565b60006020820190508181036000830152612fe781612fab565b9050919050565b7f4552433230466c6173684d696e743a2077726f6e6720746f6b656e0000000000600082015250565b6000613024601b836123e5565b915061302f82612fee565b602082019050919050565b6000602082019050818103600083015261305381613017565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130b66026836123e5565b91506130c18261305a565b604082019050919050565b600060208201905081810360008301526130e5816130a9565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261314e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613111565b6131588683613111565b95508019841693508086168417925050509392505050565b6000819050919050565b600061319561319061318b846124f4565b613170565b6124f4565b9050919050565b6000819050919050565b6131af8361317a565b6131c36131bb8261319c565b84845461311e565b825550505050565b600090565b6131d86131cb565b6131e38184846131a6565b505050565b5b81811015613207576131fc6000826131d0565b6001810190506131e9565b5050565b601f82111561324c5761321d816130ec565b61322684613101565b81016020851015613235578190505b61324961324185613101565b8301826131e8565b50505b505050565b600082821c905092915050565b600061326f60001984600802613251565b1980831691505092915050565b6000613288838361325e565b9150826002028217905092915050565b6132a1826123da565b67ffffffffffffffff8111156132ba576132b9612df4565b5b6132c48254612b1d565b6132cf82828561320b565b600060209050601f83116001811461330257600084156132f0578287015190505b6132fa858261327c565b865550613362565b601f198416613310866130ec565b60005b8281101561333857848901518255600182019150602085019450602081019050613313565b868310156133555784890151613351601f89168261325e565b8355505b6001600288020188555050505b505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133c66024836123e5565b91506133d18261336a565b604082019050919050565b600060208201905081810360008301526133f5816133b9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134586022836123e5565b9150613463826133fc565b604082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006134c4601d836123e5565b91506134cf8261348e565b602082019050919050565b600060208201905081810360008301526134f3816134b7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135566025836123e5565b9150613561826134fa565b604082019050919050565b6000602082019050818103600083015261358581613549565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e86023836123e5565b91506135f38261358c565b604082019050919050565b60006020820190508181036000830152613617816135db565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061367a6026836123e5565b91506136858261361e565b604082019050919050565b600060208201905081810360008301526136a98161366d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136e66020836123e5565b91506136f1826136b0565b602082019050919050565b60006020820190508181036000830152613715816136d9565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613752601f836123e5565b915061375d8261371c565b602082019050919050565b6000602082019050818103600083015261378181613745565b9050919050565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b60006137be6016836123e5565b91506137c982613788565b602082019050919050565b600060208201905081810360008301526137ed816137b1565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b600061382a601d836123e5565b9150613835826137f4565b602082019050919050565b600060208201905081810360008301526138598161381d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006138eb6021836123e5565b91506138f68261388f565b604082019050919050565b6000602082019050818103600083015261391a816138de565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061397d6022836123e5565b915061398882613921565b604082019050919050565b600060208201905081810360008301526139ac81613970565b9050919050565b600081519050919050565b6000819050602082019050919050565b60006139da8251612654565b80915050919050565b60006139ee826139b3565b826139f8846139be565b9050613a03816139ce565b92506020821015613a4357613a3e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802613111565b831692505b5050919050565b600060a082019050613a5f600083018861265e565b613a6c602083018761265e565b613a79604083018661265e565b613a8660608301856125a0565b613a93608083018461281b565b9695505050505050565b6000608082019050613ab2600083018761265e565b613abf602083018661262a565b613acc604083018561265e565b613ad9606083018461265e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000613b476018836123e5565b9150613b5282613b11565b602082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000613bb3601f836123e5565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c456022836123e5565b9150613c5082613be9565b604082019050919050565b60006020820190508181036000830152613c7481613c38565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613cb5826124f4565b9150613cc0836124f4565b925082613cd057613ccf613c7b565b5b82820490509291505056fea2646970667358221220083210db7c5475e61f5454c97e03f429f84aee9cfa58c6d7169691493efc965464736f6c63430008120033