608060405234801562000010575f80fd5b506040516200462038038062004620833981810160405281019062000036919062000a81565b733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600b81526020017f54726176656c4769726c730000000000000000000000000000000000000000008152506040518060400160405280600381526020017f54474b00000000000000000000000000000000000000000000000000000000008152508160029081620000ca919062000d07565b508060039081620000dc919062000d07565b50620000ed6200035360201b60201c565b5f8190555050505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002d8578015620001a9576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200017492919062000e2e565b5f604051808303815f87803b1580156200018c575f80fd5b505af11580156200019f573d5f803e3d5ffd5b50505050620002d7565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200025d576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b81526004016200022892919062000e2e565b5f604051808303815f87803b15801562000240575f80fd5b505af115801562000253573d5f803e3d5ffd5b50505050620002d6565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b8152600401620002a6919062000e59565b5f604051808303815f87803b158015620002be575f80fd5b505af1158015620002d1573d5f803e3d5ffd5b505050505b5b5b5050620002fa620002ee6200035b60201b60201c565b6200036260201b60201c565b5f600a60146101000a81548160ff021916908315150217905550620003273360016200042560201b60201c565b80600b908162000338919062000d07565b506200034c3360fa620005fa60201b60201c565b5062000ff4565b5f6001905090565b5f33905090565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805490505f820362000464576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620004785f8483856200062060201b60201c565b600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055506200050283620004e45f865f6200062660201b60201c565b620004f5856200065560201b60201c565b176200066460201b60201c565b60045f8381526020019081526020015f20819055505f80838301905073ffffffffffffffffffffffffffffffffffffffff8516915082825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600183015b8181146200059e5780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a460018101905062000563565b505f8203620005d9576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f819055505050620005f55f8483856200068e60201b60201c565b505050565b6200060a6200069460201b60201c565b6200061c82826200072560201b60201c565b5050565b50505050565b5f8060e883901c905060e862000644868684620008c360201b60201c565b62ffffff16901b9150509392505050565b5f6001821460e11b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b620006a46200035b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006ca620008cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000723576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071a9062000ed2565b60405180910390fd5b565b62000735620008f360201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff16111562000796576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078d9062000f66565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000807576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007fe9062000fd4565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681525060085f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b5f9392505050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f612710905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200095d8262000915565b810181811067ffffffffffffffff821117156200097f576200097e62000925565b5b80604052505050565b5f62000993620008fc565b9050620009a1828262000952565b919050565b5f67ffffffffffffffff821115620009c357620009c262000925565b5b620009ce8262000915565b9050602081019050919050565b5f5b83811015620009fa578082015181840152602081019050620009dd565b5f8484015250505050565b5f62000a1b62000a1584620009a6565b62000988565b90508281526020810184848401111562000a3a5762000a3962000911565b5b62000a47848285620009db565b509392505050565b5f82601f83011262000a665762000a656200090d565b5b815162000a7884826020860162000a05565b91505092915050565b5f6020828403121562000a995762000a9862000905565b5b5f82015167ffffffffffffffff81111562000ab95762000ab862000909565b5b62000ac78482850162000a4f565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b1f57607f821691505b60208210810362000b355762000b3462000ada565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b5c565b62000ba5868362000b5c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bef62000be962000be38462000bbd565b62000bc6565b62000bbd565b9050919050565b5f819050919050565b62000c0a8362000bcf565b62000c2262000c198262000bf6565b84845462000b68565b825550505050565b5f90565b62000c3862000c2a565b62000c4581848462000bff565b505050565b5b8181101562000c6c5762000c605f8262000c2e565b60018101905062000c4b565b5050565b601f82111562000cbb5762000c858162000b3b565b62000c908462000b4d565b8101602085101562000ca0578190505b62000cb862000caf8562000b4d565b83018262000c4a565b50505b505050565b5f82821c905092915050565b5f62000cdd5f198460080262000cc0565b1980831691505092915050565b5f62000cf7838362000ccc565b9150826002028217905092915050565b62000d128262000ad0565b67ffffffffffffffff81111562000d2e5762000d2d62000925565b5b62000d3a825462000b07565b62000d4782828562000c70565b5f60209050601f83116001811462000d7d575f841562000d68578287015190505b62000d74858262000cea565b86555062000de3565b601f19841662000d8d8662000b3b565b5f5b8281101562000db65784890151825560018201915060208501945060208101905062000d8f565b8683101562000dd6578489015162000dd2601f89168262000ccc565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e168262000deb565b9050919050565b62000e288162000e0a565b82525050565b5f60408201905062000e435f83018562000e1d565b62000e52602083018462000e1d565b9392505050565b5f60208201905062000e6e5f83018462000e1d565b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000eba60208362000e74565b915062000ec78262000e84565b602082019050919050565b5f6020820190508181035f83015262000eeb8162000eac565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c206578636565645f8201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b5f62000f4e602a8362000e74565b915062000f5b8262000ef2565b604082019050919050565b5f6020820190508181035f83015262000f7f8162000f40565b9050919050565b7f455243323938313a20696e76616c6964207265636569766572000000000000005f82015250565b5f62000fbc60198362000e74565b915062000fc98262000f86565b602082019050919050565b5f6020820190508181035f83015262000fed8162000fae565b9050919050565b61361e80620010025f395ff3fe6080604052600436106101cc575f3560e01c806368428a1b116100f6578063a0712d6811610094578063b88d4fde11610063578063b88d4fde146105f3578063c87b56dd1461060f578063e985e9c51461064b578063f2fde38b14610687576101cc565b8063a0712d6814610571578063a0bcfc7f1461058d578063a22cb465146105b5578063aa1b103f146105dd576101cc565b8063853828b6116100d0578063853828b6146104dd5780638d859f3e146104f35780638da5cb5b1461051d57806395d89b4114610547576101cc565b806368428a1b1461046157806370a082311461048b578063715018a6146104c7576101cc565b806323b872dd1161016e57806342842e0e1161013d57806342842e0e146103b757806358cd080c146103d3578063629fc2cb146103e95780636352211e14610425576101cc565b806323b872dd1461030a5780632a55205a1461032657806332cb6b0c1461036357806341f434341461038d576101cc565b8063081812fc116101aa578063081812fc1461025e578063095ea7b31461029a5780630f2cdd6c146102b657806318160ddd146102e0576101cc565b806301ffc9a7146101d057806304634d8d1461020c57806306fdde0314610234575b5f80fd5b3480156101db575f80fd5b506101f660048036038101906101f19190612491565b6106af565b60405161020391906124d6565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d919061258a565b6106d0565b005b34801561023f575f80fd5b506102486106e6565b6040516102559190612652565b60405180910390f35b348015610269575f80fd5b50610284600480360381019061027f91906126a5565b610776565b60405161029191906126df565b60405180910390f35b6102b460048036038101906102af91906126f8565b6107f0565b005b3480156102c1575f80fd5b506102ca610809565b6040516102d79190612745565b60405180910390f35b3480156102eb575f80fd5b506102f461080e565b6040516103019190612745565b60405180910390f35b610324600480360381019061031f919061275e565b610823565b005b348015610331575f80fd5b5061034c600480360381019061034791906127ae565b610872565b60405161035a9291906127ec565b60405180910390f35b34801561036e575f80fd5b50610377610a4e565b6040516103849190612745565b60405180910390f35b348015610398575f80fd5b506103a1610a54565b6040516103ae919061286e565b60405180910390f35b6103d160048036038101906103cc919061275e565b610a66565b005b3480156103de575f80fd5b506103e7610ab5565b005b3480156103f4575f80fd5b5061040f600480360381019061040a9190612887565b610ae9565b60405161041c91906128d4565b60405180910390f35b348015610430575f80fd5b5061044b600480360381019061044691906126a5565b610afa565b60405161045891906126df565b60405180910390f35b34801561046c575f80fd5b50610475610b0b565b60405161048291906124d6565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac9190612887565b610b1e565b6040516104be9190612745565b60405180910390f35b3480156104d2575f80fd5b506104db610bd3565b005b3480156104e8575f80fd5b506104f1610be6565b005b3480156104fe575f80fd5b50610507610c62565b6040516105149190612745565b60405180910390f35b348015610528575f80fd5b50610531610c6d565b60405161053e91906126df565b60405180910390f35b348015610552575f80fd5b5061055b610c95565b6040516105689190612652565b60405180910390f35b61058b600480360381019061058691906126a5565b610d25565b005b348015610598575f80fd5b506105b360048036038101906105ae9190612a19565b610f89565b005b3480156105c0575f80fd5b506105db60048036038101906105d69190612a8a565b610fa4565b005b3480156105e8575f80fd5b506105f1610fbd565b005b61060d60048036038101906106089190612b66565b610fcf565b005b34801561061a575f80fd5b50610635600480360381019061063091906126a5565b611020565b6040516106429190612652565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612be6565b6110bb565b60405161067e91906124d6565b60405180910390f35b348015610692575f80fd5b506106ad60048036038101906106a89190612887565b611149565b005b5f6106b9826111cb565b806106c957506106c88261125c565b5b9050919050565b6106d86112d5565b6106e28282611353565b5050565b6060600280546106f590612c51565b80601f016020809104026020016040519081016040528092919081815260200182805461072190612c51565b801561076c5780601f106107435761010080835404028352916020019161076c565b820191905f5260205f20905b81548152906001019060200180831161074f57829003601f168201915b5050505050905090565b5f610780826114e3565b6107b6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b816107fa8161153d565b6108048383611637565b505050565b600381565b5f610817611776565b6001545f540303905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610861576108603361153d565b5b61086c84848461177e565b50505050565b5f805f60095f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036109fb5760086040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f610a04611a8c565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610a309190612cae565b610a3a9190612d1c565b9050815f0151819350935050509250929050565b6108ae81565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aa457610aa33361153d565b5b610aaf848484611a95565b50505050565b610abd6112d5565b600a60149054906101000a900460ff1615600a60146101000a81548160ff021916908315150217905550565b5f610af382611ab4565b9050919050565b5f610b0482611afe565b9050919050565b600a60149054906101000a900460ff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b84576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b610bdb6112d5565b610be45f611bc1565b565b610bee6112d5565b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610c1390612d79565b5f6040518083038185875af1925050503d805f8114610c4d576040519150601f19603f3d011682016040523d82523d5f602084013e610c52565b606091505b5050905080610c5f575f80fd5b50565b6607d0e36a81800081565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610ca490612c51565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd090612c51565b8015610d1b5780601f10610cf257610100808354040283529160200191610d1b565b820191905f5260205f20905b815481529060010190602001808311610cfe57829003601f168201915b5050505050905090565b600a60149054906101000a900460ff16610d74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6b90612dd7565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990612e3f565b60405180910390fd5b6108ae81610dee611c84565b610df89190612e5d565b1115610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3090612eda565b60405180910390fd5b600381610e4533610b1e565b610e4f9190612e5d565b1115610e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8790612f42565b60405180910390fd5b6001610e9b33611ab4565b67ffffffffffffffff161015610f2657610eb6336001611c95565b6001811115610f215734600182610ecd9190612f60565b6607d0e36a818000610edf9190612cae565b1115610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1790612fdd565b60405180910390fd5b5b610f7c565b34816607d0e36a818000610f3a9190612cae565b1115610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290612fdd565b60405180910390fd5b5b610f863382611d45565b50565b610f916112d5565b80600b9081610fa0919061318f565b5050565b81610fae8161153d565b610fb88383611eee565b505050565b610fc56112d5565b610fcd611ff4565b565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461100d5761100c3361153d565b5b6110198585858561203e565b5050505050565b606061102b826114e3565b611061576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61106a6120b0565b90505f8151036110885760405180602001604052805f8152506110b3565b8061109284612140565b6040516020016110a3929190613298565b6040516020818303038152906040525b915050919050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6111516112d5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b69061332b565b60405180910390fd5b6111c881611bc1565b50565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061122557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806112555750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806112ce57506112cd8261218f565b5b9050919050565b6112dd6121f8565b73ffffffffffffffffffffffffffffffffffffffff166112fb610c6d565b73ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890613393565b60405180910390fd5b565b61135b611a8c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff1611156113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090613421565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90613489565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681525060085f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b5f816114ed611776565b111580156114fb57505f5482105b801561153657505f7c010000000000000000000000000000000000000000000000000000000060045f8581526020019081526020015f205416145b9050919050565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611634576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016115b39291906134a7565b602060405180830381865afa1580156115ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f291906134e2565b61163357806040517fede71dcc00000000000000000000000000000000000000000000000000000000815260040161162a91906126df565b60405180910390fd5b5b50565b5f61164182610afa565b90508073ffffffffffffffffffffffffffffffffffffffff166116626121ff565b73ffffffffffffffffffffffffffffffffffffffff16146116c55761168e816116896121ff565b6110bb565b6116c4576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8260065f8481526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b5f6001905090565b5f61178882611afe565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117ef576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f806117fa84612206565b91509150611810818761180b6121ff565b612229565b61185c57611825866118206121ff565b6110bb565b61185b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036118c1576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118ce868686600161226c565b80156118d8575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055506119a08561197c888887612272565b7c020000000000000000000000000000000000000000000000000000000017612299565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603611a1c575f6001850190505f60045f8381526020019081526020015f205403611a1a575f548114611a19578360045f8381526020019081526020015f20819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a8486868660016122c3565b505050505050565b5f612710905090565b611aaf83838360405180602001604052805f815250610fcf565b505050565b5f60c060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054901c9050919050565b5f8082905080611b0c611776565b11611b8a575f54811015611b89575f60045f8381526020019081526020015f205490505f7c0100000000000000000000000000000000000000000000000000000000821603611b87575b5f8103611b7d5760045f836001900393508381526020019081526020015f20549050611b56565b8092505050611bbc565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611c8d611776565b5f5403905090565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f82905060c081901b77ffffffffffffffffffffffffffffffffffffffffffffffff83161791508160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050505050565b5f805490505f8203611d83576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d8f5f84838561226c565b600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550611e0183611df25f865f612272565b611dfb856122c9565b17612299565b60045f8381526020019081526020015f20819055505f80838301905073ffffffffffffffffffffffffffffffffffffffff8516915082825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600183015b818114611e9b5780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600181019050611e62565b505f8203611ed5576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f819055505050611ee95f8483856122c3565b505050565b8060075f611efa6121ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611fa36121ff565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fe891906124d6565b60405180910390a35050565b60085f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f820160146101000a8154906bffffffffffffffffffffffff02191690555050565b612049848484610823565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146120aa57612073848484846122d8565b6120a9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6060600b80546120bf90612c51565b80601f01602080910402602001604051908101604052809291908181526020018280546120eb90612c51565b80156121365780601f1061210d57610100808354040283529160200191612136565b820191905f5260205f20905b81548152906001019060200180831161211957829003601f168201915b5050505050905090565b606060a060405101806040526020810391505f825281835b60011561217a57600184039350600a81066030018453600a8104905080612158575b50828103602084039350808452505050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b5f33905090565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e8612288868684612423565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f6001821460e11b9050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122fd6121ff565b8786866040518563ffffffff1660e01b815260040161231f949392919061355f565b6020604051808303815f875af192505050801561235a57506040513d601f19601f8201168201806040525081019061235791906135bd565b60015b6123d0573d805f8114612388576040519150601f19603f3d011682016040523d82523d5f602084013e61238d565b606091505b505f8151036123c8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f9392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124708161243c565b811461247a575f80fd5b50565b5f8135905061248b81612467565b92915050565b5f602082840312156124a6576124a5612434565b5b5f6124b38482850161247d565b91505092915050565b5f8115159050919050565b6124d0816124bc565b82525050565b5f6020820190506124e95f8301846124c7565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612518826124ef565b9050919050565b6125288161250e565b8114612532575f80fd5b50565b5f813590506125438161251f565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b61256981612549565b8114612573575f80fd5b50565b5f8135905061258481612560565b92915050565b5f80604083850312156125a05761259f612434565b5b5f6125ad85828601612535565b92505060206125be85828601612576565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125ff5780820151818401526020810190506125e4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612624826125c8565b61262e81856125d2565b935061263e8185602086016125e2565b6126478161260a565b840191505092915050565b5f6020820190508181035f83015261266a818461261a565b905092915050565b5f819050919050565b61268481612672565b811461268e575f80fd5b50565b5f8135905061269f8161267b565b92915050565b5f602082840312156126ba576126b9612434565b5b5f6126c784828501612691565b91505092915050565b6126d98161250e565b82525050565b5f6020820190506126f25f8301846126d0565b92915050565b5f806040838503121561270e5761270d612434565b5b5f61271b85828601612535565b925050602061272c85828601612691565b9150509250929050565b61273f81612672565b82525050565b5f6020820190506127585f830184612736565b92915050565b5f805f6060848603121561277557612774612434565b5b5f61278286828701612535565b935050602061279386828701612535565b92505060406127a486828701612691565b9150509250925092565b5f80604083850312156127c4576127c3612434565b5b5f6127d185828601612691565b92505060206127e285828601612691565b9150509250929050565b5f6040820190506127ff5f8301856126d0565b61280c6020830184612736565b9392505050565b5f819050919050565b5f61283661283161282c846124ef565b612813565b6124ef565b9050919050565b5f6128478261281c565b9050919050565b5f6128588261283d565b9050919050565b6128688161284e565b82525050565b5f6020820190506128815f83018461285f565b92915050565b5f6020828403121561289c5761289b612434565b5b5f6128a984828501612535565b91505092915050565b5f67ffffffffffffffff82169050919050565b6128ce816128b2565b82525050565b5f6020820190506128e75f8301846128c5565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61292b8261260a565b810181811067ffffffffffffffff8211171561294a576129496128f5565b5b80604052505050565b5f61295c61242b565b90506129688282612922565b919050565b5f67ffffffffffffffff821115612987576129866128f5565b5b6129908261260a565b9050602081019050919050565b828183375f83830152505050565b5f6129bd6129b88461296d565b612953565b9050828152602081018484840111156129d9576129d86128f1565b5b6129e484828561299d565b509392505050565b5f82601f830112612a00576129ff6128ed565b5b8135612a108482602086016129ab565b91505092915050565b5f60208284031215612a2e57612a2d612434565b5b5f82013567ffffffffffffffff811115612a4b57612a4a612438565b5b612a57848285016129ec565b91505092915050565b612a69816124bc565b8114612a73575f80fd5b50565b5f81359050612a8481612a60565b92915050565b5f8060408385031215612aa057612a9f612434565b5b5f612aad85828601612535565b9250506020612abe85828601612a76565b9150509250929050565b5f67ffffffffffffffff821115612ae257612ae16128f5565b5b612aeb8261260a565b9050602081019050919050565b5f612b0a612b0584612ac8565b612953565b905082815260208101848484011115612b2657612b256128f1565b5b612b3184828561299d565b509392505050565b5f82601f830112612b4d57612b4c6128ed565b5b8135612b5d848260208601612af8565b91505092915050565b5f805f8060808587031215612b7e57612b7d612434565b5b5f612b8b87828801612535565b9450506020612b9c87828801612535565b9350506040612bad87828801612691565b925050606085013567ffffffffffffffff811115612bce57612bcd612438565b5b612bda87828801612b39565b91505092959194509250565b5f8060408385031215612bfc57612bfb612434565b5b5f612c0985828601612535565b9250506020612c1a85828601612535565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c6857607f821691505b602082108103612c7b57612c7a612c24565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cb882612672565b9150612cc383612672565b9250828202612cd181612672565b91508282048414831517612ce857612ce7612c81565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d2682612672565b9150612d3183612672565b925082612d4157612d40612cef565b5b828204905092915050565b5f81905092915050565b50565b5f612d645f83612d4c565b9150612d6f82612d56565b5f82019050919050565b5f612d8382612d59565b9150819050919050565b7f4d696e74206e6f742061637469766500000000000000000000000000000000005f82015250565b5f612dc1600f836125d2565b9150612dcc82612d8d565b602082019050919050565b5f6020820190508181035f830152612dee81612db5565b9050919050565b7f4e6f20636f6e74726163747320616c6c6f7765640000000000000000000000005f82015250565b5f612e296014836125d2565b9150612e3482612df5565b602082019050919050565b5f6020820190508181035f830152612e5681612e1d565b9050919050565b5f612e6782612672565b9150612e7283612672565b9250828201905080821115612e8a57612e89612c81565b5b92915050565b7f536f6c64204f75740000000000000000000000000000000000000000000000005f82015250565b5f612ec46008836125d2565b9150612ecf82612e90565b602082019050919050565b5f6020820190508181035f830152612ef181612eb8565b9050919050565b7f45786365656473206d6178207065722077616c6c6574000000000000000000005f82015250565b5f612f2c6016836125d2565b9150612f3782612ef8565b602082019050919050565b5f6020820190508181035f830152612f5981612f20565b9050919050565b5f612f6a82612672565b9150612f7583612672565b9250828203905081811115612f8d57612f8c612c81565b5b92915050565b7f496e73756666696369656e742066756e64732073656e740000000000000000005f82015250565b5f612fc76017836125d2565b9150612fd282612f93565b602082019050919050565b5f6020820190508181035f830152612ff481612fbb565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026130577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261301c565b613061868361301c565b95508019841693508086168417925050509392505050565b5f61309361308e61308984612672565b612813565b612672565b9050919050565b5f819050919050565b6130ac83613079565b6130c06130b88261309a565b848454613028565b825550505050565b5f90565b6130d46130c8565b6130df8184846130a3565b505050565b5b81811015613102576130f75f826130cc565b6001810190506130e5565b5050565b601f8211156131475761311881612ffb565b6131218461300d565b81016020851015613130578190505b61314461313c8561300d565b8301826130e4565b50505b505050565b5f82821c905092915050565b5f6131675f198460080261314c565b1980831691505092915050565b5f61317f8383613158565b9150826002028217905092915050565b613198826125c8565b67ffffffffffffffff8111156131b1576131b06128f5565b5b6131bb8254612c51565b6131c6828285613106565b5f60209050601f8311600181146131f7575f84156131e5578287015190505b6131ef8582613174565b865550613256565b601f19841661320586612ffb565b5f5b8281101561322c57848901518255600182019150602085019450602081019050613207565b868310156132495784890151613245601f891682613158565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f613272826125c8565b61327c818561325e565b935061328c8185602086016125e2565b80840191505092915050565b5f6132a38285613268565b91506132af8284613268565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133156026836125d2565b9150613320826132bb565b604082019050919050565b5f6020820190508181035f83015261334281613309565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61337d6020836125d2565b915061338882613349565b602082019050919050565b5f6020820190508181035f8301526133aa81613371565b9050919050565b7f455243323938313a20726f79616c7479206665652077696c6c206578636565645f8201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b5f61340b602a836125d2565b9150613416826133b1565b604082019050919050565b5f6020820190508181035f830152613438816133ff565b9050919050565b7f455243323938313a20696e76616c6964207265636569766572000000000000005f82015250565b5f6134736019836125d2565b915061347e8261343f565b602082019050919050565b5f6020820190508181035f8301526134a081613467565b9050919050565b5f6040820190506134ba5f8301856126d0565b6134c760208301846126d0565b9392505050565b5f815190506134dc81612a60565b92915050565b5f602082840312156134f7576134f6612434565b5b5f613504848285016134ce565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135318261350d565b61353b8185613517565b935061354b8185602086016125e2565b6135548161260a565b840191505092915050565b5f6080820190506135725f8301876126d0565b61357f60208301866126d0565b61358c6040830185612736565b818103606083015261359e8184613527565b905095945050505050565b5f815190506135b781612467565b92915050565b5f602082840312156135d2576135d1612434565b5b5f6135df848285016135a9565b9150509291505056fea2646970667358221220aaa2662f0fa19b52a496dc646736f4a180ca82d5c0c240f3e0f8f88838b539c764736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000043697066733a2f2f62616679626569663770726577376e646a326464627263696a786e7a6c75636f626469726737687235347171756b73646a726c737a78676d746e6d2f0000000000000000000000000000000000000000000000000000000000