0x6101406040523480156200001257600080fd5b506040518060400160405280600b81526020017f53706163654149204c4c43000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f53706163654149204c4c430000000000000000000000000000000000000000008152506040518060400160405280600481526020017f445343490000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010492919062000bec565b5080600490805190602001906200011d92919062000bec565b50505060008280519060200120905060008280519060200120905060007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90508260e081815250508161010081815250504660a08181525050620001898184846200021960201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508061012081815250505050505050506200021333620001e86200025560201b60201c565b600a620001f6919062000e36565b6305f5e10062000207919062000e87565b6200025e60201b60201c565b62001348565b600083838346306040516020016200023695949392919062000f59565b6040516020818303038152906040528051906020012090509392505050565b60006012905090565b6200027582826200027960201b62000e7b1760201c565b5050565b6200029082826200033760201b62000f081760201c565b620002a0620004a560201b60201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16620002ce620004c960201b60201c565b111562000312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000309906200103d565b60405180910390fd5b620003316009620004d360201b6200105f1783620004eb60201b60201c565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a190620010af565b60405180910390fd5b620003be60008383620007f860201b60201c565b8060026000828254620003d29190620010d1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200048591906200112e565b60405180910390a3620004a160008383620007fd60201b60201c565b5050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b6000600254905090565b60008183620004e39190620010d1565b905092915050565b6000806000858054905090506000808214620005c65762000521876001846200051591906200114b565b6200081a60201b60201c565b6040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505062000602565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1693506200063584868860201c565b925060008211801562000651575043816000015163ffffffff16145b15620006e4576200066d836200082f60201b620010751760201c565b6200068d886001856200068191906200114b565b6200081a60201b60201c565b60000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550620007ee565b86604051806040016040528062000706436200089d60201b620010e01760201c565b63ffffffff16815260200162000727866200082f60201b620010751760201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b505050565b62000815838383620008f360201b620011331760201c565b505050565b60008260005281602060002001905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff801682111562000895576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088c90620011fc565b60405180910390fd5b819050919050565b600063ffffffff8016821115620008eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e29062001294565b60405180910390fd5b819050919050565b6200090b8383836200094360201b6200115e1760201c565b6200093e62000920846200094860201b60201c565b62000931846200094860201b60201c565b83620009b160201b60201c565b505050565b505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620009ee5750600081115b1562000bcf57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000ae15760008062000a88600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002062000bd460201b620011631785620004eb60201b60201c565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000ad6929190620012b6565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000bce5760008062000b75600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020620004d360201b6200105f1785620004eb60201b60201c565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405162000bc3929190620012b6565b60405180910390a250505b5b505050565b6000818362000be491906200114b565b905092915050565b82805462000bfa9062001312565b90600052602060002090601f01602090048101928262000c1e576000855562000c6a565b82601f1062000c3957805160ff191683800117855562000c6a565b8280016001018555821562000c6a579182015b8281111562000c6957825182559160200191906001019062000c4c565b5b50905062000c79919062000c7d565b5090565b5b8082111562000c9857600081600090555060010162000c7e565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d2a5780860481111562000d025762000d0162000c9c565b5b600185161562000d125780820291505b808102905062000d228562000ccb565b945062000ce2565b94509492505050565b60008262000d45576001905062000e18565b8162000d55576000905062000e18565b816001811462000d6e576002811462000d795762000daf565b600191505062000e18565b60ff84111562000d8e5762000d8d62000c9c565b5b8360020a91508482111562000da85762000da762000c9c565b5b5062000e18565b5060208310610133831016604e8410600b841016171562000de95782820a90508381111562000de35762000de262000c9c565b5b62000e18565b62000df8848484600162000cd8565b9250905081840481111562000e125762000e1162000c9c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e438262000e1f565b915062000e508362000e29565b925062000e7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d33565b905092915050565b600062000e948262000e1f565b915062000ea18362000e1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000edd5762000edc62000c9c565b5b828202905092915050565b6000819050919050565b62000efd8162000ee8565b82525050565b62000f0e8162000e1f565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f418262000f14565b9050919050565b62000f538162000f34565b82525050565b600060a08201905062000f70600083018862000ef2565b62000f7f602083018762000ef2565b62000f8e604083018662000ef2565b62000f9d606083018562000f03565b62000fac608083018462000f48565b9695505050505050565b600082825260208201905092915050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b60006200102560308362000fb6565b9150620010328262000fc7565b604082019050919050565b60006020820190508181036000830152620010588162001016565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001097601f8362000fb6565b9150620010a4826200105f565b602082019050919050565b60006020820190508181036000830152620010ca8162001088565b9050919050565b6000620010de8262000e1f565b9150620010eb8362000e1f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001123576200112262000c9c565b5b828201905092915050565b600060208201905062001145600083018462000f03565b92915050565b6000620011588262000e1f565b9150620011658362000e1f565b9250828210156200117b576200117a62000c9c565b5b828203905092915050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b6000620011e460278362000fb6565b9150620011f18262001186565b604082019050919050565b600060208201905081810360008301526200121781620011d5565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b60006200127c60268362000fb6565b915062001289826200121e565b604082019050919050565b60006020820190508181036000830152620012af816200126d565b9050919050565b6000604082019050620012cd600083018562000f03565b620012dc602083018462000f03565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200132b57607f821691505b60208210811415620013425762001341620012e3565b5b50919050565b60805160a05160c05160e051610100516101205161389f6200139860003960006116fe015260006117400152600061171f01526000611654015260006116aa015260006116d3015261389f6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103d9578063a9059cbb14610409578063c3cda52014610439578063d505accf14610455578063dd62ed3e14610471578063f1127ed8146104a157610142565b806370a08231146102fb5780637ecebe001461032b5780638e539e8c1461035b57806395d89b411461038b5780639ab24eb0146103a957610142565b80633644e5151161010a5780633644e51514610201578063395093511461021f5780633a46b1a81461024f578063587cde1e1461027f5780635c19a95c146102af5780636fcfff45146102cb57610142565b806306fdde0314610147578063095ea7b31461016557806318160ddd1461019557806323b872dd146101b3578063313ce567146101e3575b600080fd5b61014f6104d1565b60405161015c9190612561565b60405180910390f35b61017f600480360381019061017a919061261c565b610563565b60405161018c9190612677565b60405180910390f35b61019d610586565b6040516101aa91906126a1565b60405180910390f35b6101cd60048036038101906101c891906126bc565b610590565b6040516101da9190612677565b60405180910390f35b6101eb6105bf565b6040516101f8919061272b565b60405180910390f35b6102096105c8565b604051610216919061275f565b60405180910390f35b6102396004803603810190610234919061261c565b6105d7565b6040516102469190612677565b60405180910390f35b6102696004803603810190610264919061261c565b61060e565b60405161027691906126a1565b60405180910390f35b6102996004803603810190610294919061277a565b6106a2565b6040516102a691906127b6565b60405180910390f35b6102c960048036038101906102c4919061277a565b61070b565b005b6102e560048036038101906102e0919061277a565b61071f565b6040516102f291906127f0565b60405180910390f35b6103156004803603810190610310919061277a565b610773565b60405161032291906126a1565b60405180910390f35b6103456004803603810190610340919061277a565b6107bb565b60405161035291906126a1565b60405180910390f35b6103756004803603810190610370919061280b565b61080b565b60405161038291906126a1565b60405180910390f35b610393610861565b6040516103a09190612561565b60405180910390f35b6103c360048036038101906103be919061277a565b6108f3565b6040516103d091906126a1565b60405180910390f35b6103f360048036038101906103ee919061261c565b610a04565b6040516104009190612677565b60405180910390f35b610423600480360381019061041e919061261c565b610a7b565b6040516104309190612677565b60405180910390f35b610453600480360381019061044e9190612890565b610a9e565b005b61046f600480360381019061046a919061291d565b610ba2565b005b61048b600480360381019061048691906129bf565b610ce4565b60405161049891906126a1565b60405180910390f35b6104bb60048036038101906104b69190612a2b565b610d6b565b6040516104c89190612ae0565b60405180910390f35b6060600380546104e090612b2a565b80601f016020809104026020016040519081016040528092919081815260200182805461050c90612b2a565b80156105595780601f1061052e57610100808354040283529160200191610559565b820191906000526020600020905b81548152906001019060200180831161053c57829003601f168201915b5050505050905090565b60008061056e611179565b905061057b818585611181565b600191505092915050565b6000600254905090565b60008061059b611179565b90506105a885828561134c565b6105b38585856113d8565b60019150509392505050565b60006012905090565b60006105d2611650565b905090565b6000806105e2611179565b90506106038185856105f48589610ce4565b6105fe9190612b8b565b611181565b600191505092915050565b6000438210610652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064990612c2d565b60405180910390fd5b61069a600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208361176a565b905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61071c610716611179565b826118bb565b50565b600061076c600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506110e0565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610804600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206119d5565b9050919050565b600043821061084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690612c2d565b60405180910390fd5b61085a60098361176a565b9050919050565b60606004805461087090612b2a565b80601f016020809104026020016040519081016040528092919081815260200182805461089c90612b2a565b80156108e95780601f106108be576101008083540402835291602001916108e9565b820191906000526020600020905b8154815290600101906020018083116108cc57829003601f168201915b5050505050905090565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600081146109db57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060018261098f9190612c4d565b815481106109a05761099f612c81565b5b9060005260206000200160000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166109de565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b600080610a0f611179565b90506000610a1d8286610ce4565b905083811015610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990612d22565b60405180910390fd5b610a6f8286868403611181565b60019250505092915050565b600080610a86611179565b9050610a938185856113d8565b600191505092915050565b83421115610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890612d8e565b60405180910390fd5b6000610b43610b3b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610b209493929190612dae565b604051602081830303815290604052805190602001206119e3565b8585856119fd565b9050610b4e81611a28565b8614610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8690612e3f565b60405180910390fd5b610b9981886118bb565b50505050505050565b83421115610be5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdc90612eab565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610c148c611a28565b89604051602001610c2a96959493929190612ecb565b6040516020818303038152906040528051906020012090506000610c4d826119e3565b90506000610c5d828787876119fd565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612f78565b60405180910390fd5b610cd88a8a8a611181565b50505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d7361248a565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208263ffffffff1681548110610dca57610dc9612c81565b5b906000526020600020016040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b610e858282610f08565b610e8d611a86565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610eb3610586565b1115610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb9061300a565b60405180910390fd5b610f02600961105f83611aaa565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613076565b60405180910390fd5b610f8460008383611d79565b8060026000828254610f969190612b8b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161104791906126a1565b60405180910390a361105b60008383611d7e565b5050565b6000818361106d9190612b8b565b905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80168211156110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613108565b60405180910390fd5b819050919050565b600063ffffffff801682111561112b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111229061319a565b60405180910390fd5b819050919050565b61113e83838361115e565b61115961114a846106a2565b611153846106a2565b83611d8e565b505050565b505050565b600081836111719190612c4d565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e89061322c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611258906132be565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133f91906126a1565b60405180910390a3505050565b60006113588484610ce4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113d257818110156113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb9061332a565b60405180910390fd5b6113d18484848403611181565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f906133bc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af9061344e565b60405180910390fd5b6114c3838383611d79565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611540906134e0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163791906126a1565b60405180910390a361164a848484611d7e565b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156116cc57507f000000000000000000000000000000000000000000000000000000000000000046145b156116f9577f00000000000000000000000000000000000000000000000000000000000000009050611767565b6117647f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f87565b90505b90565b6000808380549050905060008082905060058311156117e057600061178e84611fc1565b846117999190612c4d565b9050856117a688836120bb565b60000160009054906101000a900463ffffffff1663ffffffff1611156117ce578091506117de565b6001816117db9190612b8b565b92505b505b5b808210156118405760006117f583836120d0565b90508561180288836120bb565b60000160009054906101000a900463ffffffff1663ffffffff16111561182a5780915061183a565b6001816118379190612b8b565b92505b506117e1565b6000811461188f5761185e866001836118599190612c4d565b6120bb565b60000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611892565b60005b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935050505092915050565b60006118c6836106a2565b905060006118d384610773565b905082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46119cf828483611d8e565b50505050565b600081600001549050919050565b60006119f66119f0611650565b836120f6565b9050919050565b6000806000611a0e87878787612129565b91509150611a1b8161220c565b8192505050949350505050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611a75816119d5565b9150611a808161237a565b50919050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b6000806000858054905090506000808214611b7957611ad587600184611ad09190612c4d565b6120bb565b6040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050611bb5565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169350611bea84868863ffffffff16565b9250600082118015611c05575043816000015163ffffffff16145b15611c7f57611c1383611075565b611c2988600185611c249190612c4d565b6120bb565b60000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550611d6f565b866040518060400160405280611c94436110e0565b63ffffffff168152602001611ca886611075565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b505050565b611d89838383611133565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611dca5750600081115b15611f8257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ea857600080611e51600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061116385611aaa565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611e9d929190613500565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611f8157600080611f2a600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061105f85611aaa565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611f76929190613500565b60405180910390a250505b5b505050565b60008383834630604051602001611fa2959493929190613529565b6040516020818303038152906040528051906020012090509392505050565b600080821415611fd457600090506120b6565b60006001611fe184612390565b901c6001901b90506001818481611ffb57611ffa61357c565b5b048201901c905060018184816120145761201361357c565b5b048201901c9050600181848161202d5761202c61357c565b5b048201901c905060018184816120465761204561357c565b5b048201901c9050600181848161205f5761205e61357c565b5b048201901c905060018184816120785761207761357c565b5b048201901c905060018184816120915761209061357c565b5b048201901c90506120b2818285816120ac576120ab61357c565b5b04612471565b9150505b919050565b60008260005281602060002001905092915050565b600060028284186120e191906135ab565b8284166120ee9190612b8b565b905092915050565b6000828260405160200161210b929190613654565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612164576000600391509150612203565b600060018787878760405160008152602001604052604051612189949392919061368b565b6020604051602081039080840390855afa1580156121ab573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121fa57600060019250925050612203565b80600092509250505b94509492505050565b600060048111156122205761221f6136d0565b5b816004811115612233576122326136d0565b5b141561223e57612377565b60016004811115612252576122516136d0565b5b816004811115612265576122646136d0565b5b14156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d9061374b565b60405180910390fd5b600260048111156122ba576122b96136d0565b5b8160048111156122cd576122cc6136d0565b5b141561230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906137b7565b60405180910390fd5b60036004811115612322576123216136d0565b5b816004811115612335576123346136d0565b5b1415612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236d90613849565b60405180910390fd5b5b50565b6001816000016000828254019250508190555050565b600080600090506000608084901c11156123b257608083901c92506080810190505b6000604084901c11156123cd57604083901c92506040810190505b6000602084901c11156123e857602083901c92506020810190505b6000601084901c111561240357601083901c92506010810190505b6000600884901c111561241e57600883901c92506008810190505b6000600484901c111561243957600483901c92506004810190505b6000600284901c111561245457600283901c92506002810190505b6000600184901c1115612468576001810190505b80915050919050565b60008183106124805781612482565b825b905092915050565b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156125025780820151818401526020810190506124e7565b83811115612511576000848401525b50505050565b6000601f19601f8301169050919050565b6000612533826124c8565b61253d81856124d3565b935061254d8185602086016124e4565b61255681612517565b840191505092915050565b6000602082019050818103600083015261257b8184612528565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125b382612588565b9050919050565b6125c3816125a8565b81146125ce57600080fd5b50565b6000813590506125e0816125ba565b92915050565b6000819050919050565b6125f9816125e6565b811461260457600080fd5b50565b600081359050612616816125f0565b92915050565b6000806040838503121561263357612632612583565b5b6000612641858286016125d1565b925050602061265285828601612607565b9150509250929050565b60008115159050919050565b6126718161265c565b82525050565b600060208201905061268c6000830184612668565b92915050565b61269b816125e6565b82525050565b60006020820190506126b66000830184612692565b92915050565b6000806000606084860312156126d5576126d4612583565b5b60006126e3868287016125d1565b93505060206126f4868287016125d1565b925050604061270586828701612607565b9150509250925092565b600060ff82169050919050565b6127258161270f565b82525050565b6000602082019050612740600083018461271c565b92915050565b6000819050919050565b61275981612746565b82525050565b60006020820190506127746000830184612750565b92915050565b6000602082840312156127905761278f612583565b5b600061279e848285016125d1565b91505092915050565b6127b0816125a8565b82525050565b60006020820190506127cb60008301846127a7565b92915050565b600063ffffffff82169050919050565b6127ea816127d1565b82525050565b600060208201905061280560008301846127e1565b92915050565b60006020828403121561282157612820612583565b5b600061282f84828501612607565b91505092915050565b6128418161270f565b811461284c57600080fd5b50565b60008135905061285e81612838565b92915050565b61286d81612746565b811461287857600080fd5b50565b60008135905061288a81612864565b92915050565b60008060008060008060c087890312156128ad576128ac612583565b5b60006128bb89828a016125d1565b96505060206128cc89828a01612607565b95505060406128dd89828a01612607565b94505060606128ee89828a0161284f565b93505060806128ff89828a0161287b565b92505060a061291089828a0161287b565b9150509295509295509295565b600080600080600080600060e0888a03121561293c5761293b612583565b5b600061294a8a828b016125d1565b975050602061295b8a828b016125d1565b965050604061296c8a828b01612607565b955050606061297d8a828b01612607565b945050608061298e8a828b0161284f565b93505060a061299f8a828b0161287b565b92505060c06129b08a828b0161287b565b91505092959891949750929550565b600080604083850312156129d6576129d5612583565b5b60006129e4858286016125d1565b92505060206129f5858286016125d1565b9150509250929050565b612a08816127d1565b8114612a1357600080fd5b50565b600081359050612a25816129ff565b92915050565b60008060408385031215612a4257612a41612583565b5b6000612a50858286016125d1565b9250506020612a6185828601612a16565b9150509250929050565b612a74816127d1565b82525050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b612aab81612a7a565b82525050565b604082016000820151612ac76000850182612a6b565b506020820151612ada6020850182612aa2565b50505050565b6000604082019050612af56000830184612ab1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b4257607f821691505b60208210811415612b5657612b55612afb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b96826125e6565b9150612ba1836125e6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612bd657612bd5612b5c565b5b828201905092915050565b7f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400600082015250565b6000612c17601f836124d3565b9150612c2282612be1565b602082019050919050565b60006020820190508181036000830152612c4681612c0a565b9050919050565b6000612c58826125e6565b9150612c63836125e6565b925082821015612c7657612c75612b5c565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d0c6025836124d3565b9150612d1782612cb0565b604082019050919050565b60006020820190508181036000830152612d3b81612cff565b9050919050565b7f4552433230566f7465733a207369676e61747572652065787069726564000000600082015250565b6000612d78601d836124d3565b9150612d8382612d42565b602082019050919050565b60006020820190508181036000830152612da781612d6b565b9050919050565b6000608082019050612dc36000830187612750565b612dd060208301866127a7565b612ddd6040830185612692565b612dea6060830184612692565b95945050505050565b7f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000600082015250565b6000612e296019836124d3565b9150612e3482612df3565b602082019050919050565b60006020820190508181036000830152612e5881612e1c565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000612e95601d836124d3565b9150612ea082612e5f565b602082019050919050565b60006020820190508181036000830152612ec481612e88565b9050919050565b600060c082019050612ee06000830189612750565b612eed60208301886127a7565b612efa60408301876127a7565b612f076060830186612692565b612f146080830185612692565b612f2160a0830184612692565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000612f62601e836124d3565b9150612f6d82612f2c565b602082019050919050565b60006020820190508181036000830152612f9181612f55565b9050919050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60008201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b6000612ff46030836124d3565b9150612fff82612f98565b604082019050919050565b6000602082019050818103600083015261302381612fe7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613060601f836124d3565b915061306b8261302a565b602082019050919050565b6000602082019050818103600083015261308f81613053565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b60006130f26027836124d3565b91506130fd82613096565b604082019050919050565b60006020820190508181036000830152613121816130e5565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b60006131846026836124d3565b915061318f82613128565b604082019050919050565b600060208201905081810360008301526131b381613177565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132166024836124d3565b9150613221826131ba565b604082019050919050565b6000602082019050818103600083015261324581613209565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132a86022836124d3565b91506132b38261324c565b604082019050919050565b600060208201905081810360008301526132d78161329b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613314601d836124d3565b915061331f826132de565b602082019050919050565b6000602082019050818103600083015261334381613307565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133a66025836124d3565b91506133b18261334a565b604082019050919050565b600060208201905081810360008301526133d581613399565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134386023836124d3565b9150613443826133dc565b604082019050919050565b600060208201905081810360008301526134678161342b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006134ca6026836124d3565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b60006040820190506135156000830185612692565b6135226020830184612692565b9392505050565b600060a08201905061353e6000830188612750565b61354b6020830187612750565b6135586040830186612750565b6135656060830185612692565b61357260808301846127a7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135b6826125e6565b91506135c1836125e6565b9250826135d1576135d061357c565b5b828204905092915050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b600061361d6002836135dc565b9150613628826135e7565b600282019050919050565b6000819050919050565b61364e61364982612746565b613633565b82525050565b600061365f82613610565b915061366b828561363d565b60208201915061367b828461363d565b6020820191508190509392505050565b60006080820190506136a06000830187612750565b6136ad602083018661271c565b6136ba6040830185612750565b6136c76060830184612750565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006137356018836124d3565b9150613740826136ff565b602082019050919050565b6000602082019050818103600083015261376481613728565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006137a1601f836124d3565b91506137ac8261376b565b602082019050919050565b600060208201905081810360008301526137d081613794565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006138336022836124d3565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b905091905056fea2646970667358221220a7eabb92fe767088c37ea7c8a09b96fc4980115e4850e192564c295f29f0f72c64736f6c63430008090033