-
-
Notifications
You must be signed in to change notification settings - Fork 32.7k
Refs #36009 -- Added support for PostGIS 3.5 #19597
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Thank you @smithdc1! The fix looks good and tests do pass when using the "postgis/alpine" image that provides very new version of the libraries:
I think this should be merged, but before I do that, would you have further thoughts on what I added in the ticket? tl;dr I think we should reopen ticket-35775, make this PR fix that ticket, and close ticket-36009 as already fixed.
|
I'm not sure this should be merged quite yet. I would like to understand why reducing the number of rows changes the outcome of the query. When there are many rows (Cities), the result is I'm leaning towards this being a PostGIS issue (or Django's integration with) rather than an GEOS one. As part of the investigations I added a test which uses GEOS relate function(s) directly. There is no behaviour change in GEOS 3.13. |
Right, I've been trying to dig further, and I used SQL passing
SELECT "geoapp_city"."id", "geoapp_city"."name", "geoapp_city"."point" FROM "geoapp_city" WHERE ("geoapp_city"."name" = 'Lawrence' AND
ST_Relate("geoapp_city"."point", '0103000020e61000000100000032050000e9f010c64f8359c026ab22dc64004440f017b325ab7a59c03c9f01f56600444000750305de7959c0844bc79c67004440a5d5c7c2267759c09bf90c4a5f0044409487855ad37559c0dc79e2395b0044406d003620427559c0228ac91b60004440e199d024b17359c0423f53af5b004440c2f2e7db827359c0d2ff722d5a004440e8ce7d09217259c02345f3a659004440cf1fc54ee76f59c089c860ce58004440485167ee216859c0632827da55004440b82231410d6859c0732b84d558004440f60ae7d6186559c02e49a1fc560044403d20d099b46259c06ed6e07d5500444033a6608db35a59c0dd5cfc6d4f004440cd0cc2a44e5a59c0d2bd8f7b4d00444069f981ab3c5a59c0e481c8224d0044405bd2aeefc95859c0e327899c50004440b8020af5f45759c0cf46ae9b52004440ea08e066f15559c0d5cf9b8a5400444081ae7d01bd5459c03deaaf57580044406094a0bfd05259c0bda772da530044405760c8ea565259c0bda772da530044407c992842ea4f59c0b8ea3a5453004440e4a3c519c34d59c07cb8e4b853004440ddaaeb504d4c59c065c405a05100444062c3040ef64b59c028b26a53510044401fd7868a714b59c0ada415df5000444015addc0bcc4a59c0f9d9c8755300444051f4c0c7604859c04ed026874f0044400111cd81b74659c09cc600154e0044406a0fcd81b74659c09bc600154e0044402499d53bdc4359c0a4c684984b004440a723809bc54159c0211cb3ec490044402fc855df923d59c013dcfc4747004440cbd8d0cdfe3b59c0ca6c904946004440d405c88aee3059c0c04e53444b004440504eb4ab903059c0915b936e4b004440dc662ac4233059c0f333f5ba450044403284c501492f59c0b7f30d054900444068925852ee2e59c087e123624a0044400e4e44bfb62e59c01efb592c45004440b60e0ef6262e59c0efaa07cc43004440467c2766bd2b59c03a78263449004440a2755435412a59c0a0a52bd84600444078978bf84e2959c08db5bfb33d004440cf93d3a7182859c04a0bde053e004440766c04e2752659c045d5af743e0044404a04aa7f102659c00e2c47c8400044401ac39ca04d2459c06f9c14e63d004440b247a819522359c06f9c14e63d0044404e12626bec2059c095cfeb6c3c0044405548f949b52059c08ee9094b3c004440ef3cf19c2d1f59c0249babe6390044409d668176871e59c0ef59d76839004440eeea5564741e59c0f4160fef39004440db0f7860001e59c025cff57d3800444044bde0d39c1c59c0ee258dd13a004440e1d231e7191c59c0d6fd63213a004440a2bb53bcc11959c0863ce0fc3a004440b7b41a12f71859c053ebfd463b004440a596bb6f911259c0fcad996e370044406403e962d30e59c0f1f5b52e350044409a07b0c8af0e59c0e9d0e979370044402e573f36c90d59c0d3dc0a6135004440c8e9ebf99a0c59c0f39194f4300044404ab54fc7630c59c03fc7478b330044404e2b85402e0c59c0d41055f833004440a12e52280b0c59c0344dd87e32004440815eb873610b59c086730d333400444064b0e2546bff58c046ec134031004440edb776a224ff58c087a757ca320044405f09a4c4aefc58c094da8b683b0044405532005471fc58c033198ee7330044409f87da368cfb58c0db3521ad3100444008aa46af06fa58c09946938b31004440e41f80ef68f658c0565854522f004440286211c30ef458c0711b0de02d0044400a5ef415a4f158c0799109f83500444081e3326e6af158c041800c1d3b0044404d49d6e1e8f058c05723bbd232004440f65d11fc6ff058c03d0e83f92b004440c991cec0c8ef58c0473d44a33b004440166407b437ef58c05ab2b4c63b004440d3c08f6ad8ee58c0f89ffcdd3b004440467bbc900eee58c0826f9a3e3b004440a22424d236e858c0b77c24253d004440cdfc6a0e10e858c0e700c11c3d0044400e1e2856fbe058c0ae9ffacf410044403e59315c1de058c0f0de516342004440256f8099efdf58c0c67f812040004440bf2154a9d9df58c027bc04a73e0044401e2e39ee94df58c080d3bb783f00444060915f3fc4de58c0923eada23f004440bcae5fb01bdb58c087e123624a004440e8f692c668da58c05774eb353d0044403ca41820d1d958c08c4d2b854000444097a105c978d758c03f749d4e400044405676c1e09ad258c045a165dd3f004440f04c689258d258c09d84d2174200444039b69e211cd258c04cc631923d004440a9328cbb41d058c00116f9f5430044409179e40f06d058c0c67f812040004440eae8b81ad9cd58c0cc086f0f42004440e07cea58a5cc58c0a2410a9e420044404243ff0417cc58c07f6b274a4200444010e6762ff7cb58c00e2c47c8400044403c889d2974cb58c00e2c47c8400044409a95ed43deca58c0bc0512143f0044400ad5cdc5dfc758c0111956f146004440377172bf43c758c0dba337dc47004440afe8d66b7ac558c0059fe6e445004440dd8bb67f4ac458c07945441d470044406d37c1374dc158c0a3face2f4a004440c2d9ad6532c158c0cd599f724c004440e38dcc237fbf58c00b28d4d347004440dcd440f339be58c02eca6c904900444088f546ad30be58c0e6e95c514a004440598ae42b81bd58c0c79c67ec4b004440b8c667b27fbd58c0575d876a4a004440b2f18e800cbd58c088f189d549004440fe23d3a1d3bb58c09f71e140480044401818ad78fdb558c0e4998cf54c004440edee0686e5b558c06c71db084d004440dc7c23ba67b558c038dc476e4d0044402c5beb8b84b458c068942efd4b00444099d6a6b1bdb158c0f6ecb94c4d00444017d522a298b158c03ecdc98b4c004440f330485aadae58c0ca7d290b49004440e40f069e7bae58c076aa7ccf48004440a5bc564277ad58c0475a2a6f47004440423f53af5bac58c05bb22ac24d0044401503249a40ac58c0ca89761552004440a77686a92dac58c0c9552c7e5300444028486c770fab58c00858ab764d00444029560dc2dcaa58c078978bf84e004440ea025e66d8a958c0b665c0594a00444085b53176c2a958c02eca6c9049004440160e846401a958c006bcccb051004440285f23a572a758c0cf8a69f04e0044406a300dc347a758c055c1a8a44e004440f855b950f9a558c02f833122510044406c425a63d0a458c07072bf4351004440db368c82e0a358c0c8d0b1834a0044404969368fc3a258c0bc22f8df4a004440c8444ab379a158c03ecdc98b4c00444057e677b36ca058c0272abb544c0044406ed39ffd48a058c002116c4d4c004440724bd8e40da058c0129953414c004440f62686e4649f58c0a983bc1e4c004440838f1cb0499c58c00451a8894d0044403684e60a149958c0724fa5004f00444043e73576899158c0bedbbc7152004440b58cd47b2a9158c09548a2975100444040ef8d21009058c0a4c684984b00444067f4e98ca68d58c030eb6221520044403f558506628c58c08141d2a755004440aa2b9fe5798b58c0e2e5e95c5100444056478e74068b58c041226de34f004440874bb0350a8a58c00ac8381f500044402a013109178958c0a7e7dd5850004440227024d0608658c087156ef94800444095d8b5bddd8458c0c1df2f664b004440f60ce198658458c0b5fd2b2b4d004440e47b4622348358c009c03fa54a004440baa46abb098358c029417fa14700444047e2e6b5bc8258c01cc9a2cd47004440df2a4f20ec8058c04626e0d748004440d5b48b69a68058c04d4bac8c4600444042e8a04b387e58c08f6e84454500444065c39acaa27b58c0787aa52c43004440a87004a9147858c0cba0dae04400444022fdf675e07658c0aebb79aa43004440cda96400a87558c086c43d963e004440601dc70f957458c0073bc5aa410044407fdfbf79717458c097fbe42840004440103b53e8bc7158c0b2101d0247004440ab22dc64547158c00e2c47c840004440f4fc69a33a7158c0b5e0455f41004440a1681ec0227158c0e564e25641004440529159b5bf6d58c037c556b340004440f1be95b53e6d58c099ad019b40004440fda8f8cfdf6c58c07c4e1b8940004440a11f9704476758c0ebb2d87a3f004440791a0f47246658c09a7601443f00444049e00fb7fe6558c07da6eb3c3f0044407fd767cefa6058c0336abe4a3e004440eeb25f77ba6058c09372f7393e004440e014562aa86058c07c7e18213c0044407188c7464b5f58c0d63932473f004440a464168acc5e58c09d02056c400044408dee2076a65d58c006077b134300444088f19a57755c58c097fbe42840004440fad346753a5b58c0d882de1b43004440c85a43a9bd5a58c04fe78a52420044403fe603029d5a58c096c79a9141004440c07630629f5758c09c5088804300444006137f14755658c0ce70033e3f004440172d40db6a5658c03eb0e3bf4000444054d1922c6b5058c017b33638330044408d3f51d9b04f58c06ac2f69331004440d6390664af4f58c0f982161230004440d769a4a5f24c58c09f6b5f402f0044401fbfb7e9cf4c58c0b62bf4c132004440bf0e9c33a24b58c087a757ca320044406482bf96914a58c0bf83230732004440d53735b2834a58c0e9dc30fd310044402c6701da174a58c02214f8af310044403e5b8fc2394958c00be1f010310044405b5837de1d4958c0c30df8fc30004440bd4eeacbd24858c06556ef703b0044408f34b8ad2d4358c0c6dd205a2b004440986725adf84158c03d0e83f92b00444024d1cb28964058c0b89388f02f004440b1366796c33a58c0ff172051310044400dc68844a13a58c0b75f3e5931004440029eb470593858c08352b4722f0044404a27124c353858c02907b30930004440b24813ef003858c08352b4722f0044408db62a89ec3758c0234a7b832f0044402cc6a0ee9b3758c096c28c532f004440257d8c108a3358c09f41fee72c00444028d5be245e2c58c085ac3ea428004440daff006bd52758c07b1002f2250044405d8940f50f2758c009185dde1c004440e977616bb62658c02dee3f321d00444052a4ca033c2558c0bd16e48e1f0044403cf4ddad2c2558c0373465a71f0044409c3237df882458c0f3a8f8bf2300444080290307b42358c0d82b2cb81f004440f51263997e2258c09e95b4e21b0044402897c62fbc2158c01ea4a7c821004440cc7a3194131e58c0373465a71f004440f86c1d1cec1d58c0609335ea2100444084471b47ac1d58c008b0c8af1f00444007c03841b51658c0b5932c1c18004440aa969d06761658c0847264d717004440a2937c3be01558c0d6a2713417004440543541d47d1358c0f0366f9c1400444001fc53aa441358c061aa99b5140044409c8713984e0f58c0663387a4160044407024d060530e58c053944be317004440c4211b48170e58c0003acc971700444068a9bc1de10958c0e0675c38100044407c629d2adf0958c040a4dfbe0e0044403903232f6b0958c0daaa24b20f004440cd16105a0f0858c09aefe0270e004440ac8e1ce90c0858c016dd7a4d0f00444057b3cef8be0558c06803b00111004440b4c35f93350558c0c6a354c213004440d89fc4e74e0358c0b29c84d217004440488ac8b08a0158c02fbe688f17004440bd2a901ff10058c04b1f8eb4150044405932c7f2ae0058c04391eee71400444012542976b4ff57c058dc54ca130044406b813d2652fd57c009fb761211004440958f8a2ab3f957c01aea59d20f004440d97bf1457bf857c08750a5660f004440a31d37fc6ef257c0e19ba6cf0e00444097900f7a36f257c0d5edec2b0f0044404d7de2a810eb57c02a7330080b004440064e302929ea57c09ff41d820a004440a3bfb70df0e857c02f04c8cc090044406c210a832ce457c04e3b7c0a070044405adf237ca3dd57c0d1c88d4103004440e02d57dc20dd57c0be2ae7f50200444033a4035beedc57c0ff29a7d802004440b886fdef12dc57c071c9935902004440ecc3129ee7db57c055137d40020044408c521e0048db57c01eed0be401004440a6f67fa6f9da57c0f794abb6010044401a59dccf8cda57c046f8a2770100444016a6ef3504d857c00000000000004440a20227dbc0d557c030849cf7ffff43402a78af88e4d457c0bcd30af4ffff4340c4ebfa05bbd357c05f0839efffff4340287d21e4bcd357c0b6114f7633ff43403997e2aab2d357c01a6a1492ccfe43407b4fe5b4a7d357c004029d499bfe4340e8f351465cd357c05a4b0169fffd4340488ac8b08ad257c02e8d5f7825fd43403656629e95d157c0bc79aa436efc43407ce9edcf45d157c0c66f0a2b15fc4340ea944737c2d057c076f9d687f5fa4340ef6fd05e7dd057c042b456b439fa43405d6c5a2904d057c0f8c5a52a6df94340ddb3aed172cf57c0a7b1bd16f4f84340f8fd9b1727cf57c01d5723bbd2f8434075e95f92cace57c0793e03eacdf84340f48b12f417ce57c0af21382ee3f84340f6622827dacd57c005fbaf73d3f843407d3cf4ddadcd57c00bb265f9baf84340bf982d5915cd57c053ce177b2ff84340f81bedb8e1cc57c0490f43ab93f7434097a8de1ad8cc57c0374f75c8cdf64340c2dd59bbedcc57c0384bc97212f64340319413ed2acd57c011a8fe4124f543402194f77134cd57c0567f8461c0f443403924b55032cd57c0876c205d6cf443404eadbeba2acd57c02063ee5a42f44340e1048ce8f7cc57c00f9ead5dd1f34340bd3ac780eccc57c0e36c3a02b8f343407f8092ecc9cc57c07b5ff91794f34340f55f5416c9cc57c092ff733993f3434042323363c8cc57c074e7667f92f343409163eb19c2cc57c00667f0f78bf34340415c397b67cc57c0c8ea56cf49f34340d7dd3cd521cc57c0d55e44db31f34340d28a6f287ccb57c0a82f4b3b35f34340d34ecde506cb57c02312859675f343407cb262b83aca57c065ff3c0d18f443400759164cfcc957c03143e38920f4434029b57acacdc957c0b17cdd9e0df44340ca9baa78b5c957c084484cba03f443408427f4fa93c957c034f0a31af6f3434098a54fd47cc957c007fe766adff34340b51a12f758c957c0b24cbf44bcf343405cc64d0d34c957c03cd68c0c72f34340a7a78fc01fc957c0ea08e066f1f24340a31ea2d11dc957c09717601f9df243407ec9c6832dc957c02c40db6ad6f143403ca3ad4a22c957c06c718dcf64f143403c32569bffc857c047a30227dbf04340c422861dc6c857c056b439ce6df04340fc8ee1b19fc857c052b7b3af3cf04340629d2adf33c857c0672783a3e4ef434041102043c7c657c0266e15c440ef43409b038843d2c557c0ce3dc36685ee4340425e0f26c5c557c04aef1b5f7bee4340f6436cb070c557c03bfda02e52ee4340c6e061da37c557c0f12f82c64cee43407f0eec361bc557c021e3790552ee43404eb9c2bb5cc357c0a0c1a6cea3ee43406ff25b74b2c257c0693524eeb1ee43408e7747c66ac257c03fa88b14caee43408e04424432c257c05b72a35c01ef434047af06280dc257c01074b4aa25ef434045f6f8f1fbc157c02df9ab4340ef4340d9e21a9fc9c157c04cdf6b088eef4340d4c2fea7a8c157c0ad9b306316f0434055a69883a0c157c09085e81038f0434087e0b88c9bc157c0a2d288997df04340808a54b9a7c157c09afa6e5266f143407a1b9b1da9c157c0be69faec80f1434079a3ee3ea6c157c0834727e698f1434053c42962a1c157c082e67684c1f1434044a33b889dc157c027a089b0e1f143407558e1968fc157c09d103ae812f24340b29699c466c157c095898c206cf243403d380abf38c157c0df4e8ab6d0f24340d901d71533c157c04c2cf015ddf2434048507f972ac157c0ce4271ede4f2434020787c7bd7c057c0f277efa831f343401bb3b50cafc057c0ae16dfb13cf343409bfeec478ac057c04774cfba46f343409e060c923ec057c09124085740f34340227024d060bf57c0ad174339d1f243409a7ed2a258bf57c0cda0158bcff243401498688138bf57c055bfc2f0c8f243400ebe30992abf57c0f4a62215c6f243402af0314b0fbf57c0cd3464d4caf24340c3f50356aebe57c0bbf3b6afdbf2434096ac8a7093be57c0b189cc5ce0f24340f870c971a7bd57c0c79fa86c58f343409df529c764bd57c0356090f469f343401a6efa1557bd57c0e5a24eed65f343407d350708e6bc57c000fc53aa44f343408231225168bc57c03bc780ecf5f24340cd315b0fdcbb57c04fbdd95c67f24340d255babbcebb57c0dead2cd159f24340904df2237ebb57c03618eab0c2f143409e4319aa62bb57c0eb4b361e6cf14340ae2990d959bb57c0526342cc25f14340a3c9c51858bb57c06b054d4bacf04340ab5ca8fc6bbb57c0de054a0a2cf04340c6140ce296bb57c0b2ddf5ebc0ef4340c79bfc169dbb57c04c361e6cb1ef4340ddb1d82615bc57c075914259f8ee434038bc202235bc57c0ed2aa4fca4ee43406021736550bc57c048d9226937ee43407bd2890453bc57c016d86322a5ed43400bb77c2425bc57c09b3dd00a0ced434094fb1d8a02bc57c0a14ca3c9c5ec43402f4ca60a46bb57c0e1b37570b0eb434047c7d5c8aeba57c0af78ea9106eb43406fd05e7d3cba57c04f779e78ceea4340d1890453cdb957c082e2c798bbea43400d39b69e21b957c03d40f7e5ccea434057410c74edb857c0c1012d5dc1ea4340902fa182c3b857c0772e8cf4a2ea43407496598462b857c0aa77b81d1aea4340d5af743e3cb857c056b60f79cbe94340cb49287d21b857c07ff964c570e943405260014c19b857c09ca5643909e9434028486c770fb857c03a048e041ae84340aa08fcbc15b857c0fbf3955251e74340ef02250516b857c058ab764d48e74340eee65df31bb857c040f414992fe74340fe7f9c3061b857c0d5edec2b0fe64340aeba0ed594b857c086afaf75a9e54340fdf84b8bfab857c0e754320054e5434040deab5626b957c02af702b342e54340c3d9d3166dba57c0960357ca27e54340d4c734052fbb57c09589d0d117e54340e700c11c3dbb57c04df1b8a816e543404897b69c42bb57c0a44101a912e54340acd0e93458bb57c0361c7df502e543401ea67d737fbb57c04203b16ce6e443402ae216e68abb57c068d2ce84d7e4434085fcb25c8cbb57c06ce5089dd5e443402dc39a2c95bb57c01570a823cae44340408864c8b1bb57c07cb779e3a4e44340ee9431dab4bb57c0a42305169de4434036da8502d8bb57c0e792c3b743e443407841446adabb57c01c42959a3de44340df8b2fdae3bb57c03f541a31b3e343408978ebfcdbbb57c0ac39403047e3434052c058a4d7bb57c0d2ea96bd36e34340313175e2d0bb57c0f917a02a1de3434051f9d7f2cabb57c0f16778b306e3434035e84b6f7fbb57c0a2b5a2cd71e24340a1fed7a37bbb57c03b48c2056ce243407a1f359e6ebb57c0e1776a2f58e24340d6e6ff5547bb57c0025b25581ce24340c4e788ac22bb57c025484b38f1e143404815c5abacba57c04e24986a66e14340aad72d0263ba57c0154ed2fc31e143408f8cd5e6ffb957c032ffe89b34e1434070fefa9dfab957c06f714b5a37e143403f6a80b4a8b957c01f0e62e161e1434024809bc58bb957c0c0e8f2e670e143400a5ec2a289b957c054250c0c73e14340f14927124cb957c076fd82ddb0e1434011e50b5a48b957c068b3ea73b5e143405453927538b957c07bf486fbc8e14340799109f835b957c0fd6a0e10cce143409fe925c632b957c0a774b0fecfe14340e10cfe7e31b957c0b9ab5791d1e143409109f83592b857c025eb707495e24340dc2e34d769b857c0a2630795b8e2434065fed13769b857c0a2630795b8e243408cbd3830fbb757c0f6724bc0dde24340d386c3d2c0b757c08a00a777f1e2434068ca4e3fa8b757c027a3ca30eee24340247d5a457fb757c07c4276dec6e24340f3052d2460b757c0446cb07092e243405d3123bc3db757c0613596b036e24340b3d0ce6916b757c00de36e10ade14340ac71361d01b757c08198840b79e043408f0ade4c10b757c0082d2bc3f0df434051db865110b757c079af5a99f0df4340f9d346753ab757c0e78f696d1adf4340f9f5436cb0b757c03eeb1a2d07de43402afeef880ab857c04df6cfd380dd4340307f85cc95b857c0ea76f69507dd4340de196d5512b957c087889b53c9dc43404031b2648eb957c018778368addc43400e80bcaba2b957c0be7e7f60afdc434011be3e85b3b957c07f084903b1dc43408a3e1f65c4b957c051d9b0a6b2dc43402eec7acefcb957c08ff0b79ecadc43404bbb8a850cba57c0c78d164cd1dc4340f2630d2919ba57c01f36d5aad6dc4340b648da8d3eba57c084f23e8ee6dc4340f48285414fba57c0367cd9b9f2dc434071c806d2c5ba57c0b0c22d1f49dd43407307b13385bb57c0d23aaa9a20de4340daad65321cbc57c06eb72407ecde43402d8cf4a276bc57c08272dbbe47df43409cf081d3b6bc57c00ece74eb6edf4340afda9b2fb7bc57c00723aa236fdf43405ab741edb7bc57c0329067976fdf434010ccd1e3f7bc57c0b58b69a67bdf4340e814e46723bd57c054feb5bc72df43403dd68c0c72bd57c0b0e600c11cdf4340e39d8d91aebd57c07a7b6537c0de4340c1855685bdbd57c0bbb4835aa9de43405d0f26c5c7bd57c0214f92ae99de4340fc1f05d2cbbd57c009c83da98ede4340fe7d892818be57c036bcfdf1bedd43406854e0641bbe57c07fdb1324b6dd434073eb353d28be57c096e7c1dd59dd43405ef7562426be57c0da1d520c90dc4340a3ad4a22fbbd57c0009013268cda4340815ce2c803be57c0f2d077b7b2d8434026c632fd12be57c087a757ca32d843402043c70e2abe57c0ddd26a48dcd743405823015d78be57c0ca87c8ab3ed743401a51da1b7cbe57c0de3cd52137d743403b8a73d4d1be57c012fa997addd643400859164cfcbe57c0facbeec9c3d64340bb378cea21bf57c0ca3b668db9d643406086a7c865bf57c0ab53c015a7d643408f6d197096bf57c034ba83d899d6434067d1f8cbebbf57c0845412dc97d64340adf9f19716c057c024b726dd96d64340f4454b694bc057c01f5a2fff8cd643408758d6cb84c057c0853acc4682d643405b7a34d593c057c00664af777fd64340bae0e58aa7c057c000cb300b76d64340682b8e6dd8c057c07e6590ab5ed643404f53cbd6fac057c0c0779b374ed6434066bb421f2cc157c001bf469220d6434013a3919d60c157c079c6083fd7d543404a29e8f692c157c0eb6e9eea90d543408ffb56ebc4c157c0067fbf982dd54340c0b167cf65c257c08b321b6492d34340427c60c77fc257c0639ae95e27d34340fc3905f9d9c257c0034356b77ad243400ea48b4d2bc357c09f73b7eba5d14340e1eb6b5d6ac357c0dc10e335afd04340e6ae25e483c357c0ed940ed6ffcf43406e83d28685c357c0b46af3bccfcf4340c713419c87c357c02b2ae27492cf43409662797084c357c012d32ba97bcf434013bd578166c357c0e4089178a4ce4340e992718c64c357c0bff1b56796ce43401aae62135dc357c049cb68e97fce434098874cf910c357c087fa5dd89acd4340040473f4f8c257c0e789e76c01cd4340d5b32094f7c257c03f8ba548becc4340042159c004c357c096253acb2ccc43407bdcb75a27c357c087a3ab7477cb434029eca2e881c357c0fe277ff78eca4340658f5033a4c357c08411fb0450ca4340669fc728cfc357c0960854ff20ca43401fbe4c1421c457c0f98381e7dec943409961cfdb3dc457c008349a23d4c943409caf337a5ec457c0bf5a0af0c7c94340d3872ea86fc457c0eaaeec82c1c943401305fa449ec457c0c7409e5dbec94340f76db79adac457c01dba8c79cfc94340b9ffc874e8c457c04cc11a67d3c943408bb5781fabc557c0e45393d354ca434018601f9dbac557c0b80721205fca4340f24f9fbccdc557c03568d89a5cca43403143e38920c657c006bcccb051ca43409e0c8e9257c657c08c648f5033ca43404711548b6cc657c04af391f31fca43403c747b5f84c657c09de34bf309ca434004029d499bc657c0a69718cbf4c943405c957081cac657c099b24b95a9c94340b832c1b7ccc657c02939410fa6c94340fc045e33cdc657c0108a5c4aa5c9434049861c5bcfc657c0b37a87dba1c94340c3f4bd86e0c657c0ee04fbaf73c943409a03f3b9f8c657c0b61b2512f5c84340e893d367fcc657c0116c2ad2e1c8434021c24e9e38c757c01a0754c8a6c74340f63bfe6339c757c0ac8905bea2c74340823b50a73cc757c0a38e8eab91c74340f7166ab33fc757c0b52d5fbf4fc74340bd47b2db43c757c01e9767cff5c64340d74e948444c757c0ee74e789e7c643405d4a1cce40c757c069aa1730d3c643403142403c05c757c0e311edaa8cc543409b5434d6fec657c0400e4a9869c543409a780778d2c657c095bbcff1d1c443409a5154a7cec657c08d2d4613c9c44340ec6943c5cdc657c09ad7bc05c7c44340a7c98cb795c657c0b935e9b644c4434032d77e8d30c657c01d498acd8fc34340e2500eb719c657c03a2261f666c34340560dc2dceec557c0761c3f541ac34340f73aa92f4bc557c0b2b96a9e23c24340a69718cbf4c457c0cf656a12bcc14340cb988235cec357c0b70c384bc9c043408009dcba9bc357c0c30c8d2782c043409d2633de56c357c0be1072deffbf4340d5af743e3cc357c0ada6eb89aebf43409f3715a930c357c06ed39ffd48bf4340e2067c7e18c357c0132c0e677ebd4340fe63213a04c357c032c687d9cbbc4340da39cd02edc257c0b6d9588979bc43402d95b7239cc257c0c823b891b2bb43406566666666c257c0ea4141295abb43402fdb4e5b23c257c071c119fcfdba4340178046e9d2c157c04a97fe25a9ba4340645ddc4603c157c0d02a33a5f5b94340d099b4a9babf57c0717500c45db943408e5a61fa5ebf57c051dec7d11cb943409cfd8172dbbe57c0fc17080264b84340f9d85da0a4be57c05116bebed6b74340f4c473b680be57c0d3156c239eb64340fb2477d844be57c0a4c7ef6dfab54340480e84aefcbd57c0b3dad6d99db54340d481f704e3bd57c034ddcfed7cb54340c3f17c06d4bd57c0b28174b169b54340010f2c9dc9bd57c0d8086d5163b543408d2ac3b81bbd57c0aad216d7f8b443404caab69be0bc57c06244a2d0b2b443409143c4cda9bc57c0e481c8224db44340c1db831090bc57c069e04735ecb343406c97361c96bc57c0df5339ed29b34340e6e5b0fb8ebc57c0295dfa97a4b2434063b6645584bc57c09a3fa6b569b243409e23f25d4abc57c090696d1adbb143408ec9e2fe23bc57c0d93d7958a8b1434018f2bf8f0bbc57c01eecb6088db14340ccdbfd770bbc57c04e9728ee8cb143404a5198720bbc57c0105b20e88cb14340d24b8c65fabb57c0f1f109d979b14340147651f4c0bb57c0438d429259b14340c6e44fafa8bb57c00efde4b754b143401327f73b14bb57c06dc9aa0837b14340992a1895d4ba57c07fa2b2614db14340d32f116f9dba57c00070ecd973b1434008043a9336ba57c08fc70c54c6b14340f5f1d077b7b957c094f7713447b243400e4f2e695fb957c079d51af15ab24340d6e6ff5547b957c0d5ec815660b2434079060dfd13b957c0bb0b941458b24340d2c3d0eae4b857c0b2f336363bb2434051052df2d5b857c07f87613f27b2434005871744a4b857c05b79c9ffe4b143409e5dbef561b857c0cafb389a23b14340a1bfd02346b857c061d68ba19cb04340969350fa42b857c02901310917b043402900c63368b857c047ffcbb568af434057790261a7b857c076c58cf0f6ae4340cec5dff604b957c076dd5b9198ae434067800bb265b957c038842a357bae43406c94f59b89b957c03e07962364ae43403defc682c2b957c06684b70721ae43408a0b38ed0eba57c02f26cee0acad434092b06f2711ba57c0562b137ea9ad43405f65cca614ba57c0009a5447a1ad4340096ccec133ba57c0e4b8533a58ad43407573f1b73dba57c084b7072120ad434090363fbd3eba57c0608ac75c12ad434037f78e2b40ba57c061224510ffac4340f8f9b94741ba57c0a024a517f0ac4340645930f147ba57c0ad86c43d96ac43408d0f7c593eba57c015fd107edeab434006ab02df27ba57c0363e81e92faa43401a69a9bc1dba57c06ff607ca6da943402ff28cb905ba57c0a313a03aa0a8434066d7e39dfbb957c03db882b249a843402e303183f4b957c0c9da3be10ca84340b4c70be9f0b957c0fdf50a0beea743405c9b6c0ae5b957c074e17087b0a743406fb94876d4b957c0f010439c5aa74340afb321ffccb957c01bd7bfeb33a74340f39337f5bfb957c04642a19300a7434030e7c4f7a4b957c032ec704b96a643403a521b8b9fb957c0611222ef80a643400af31e679ab957c0ab4203b16ca64340b0743e3c4bb957c05b1c959ba8a54340fcadd176ecb857c0a867381ff5a443401e6e8786c5b857c0a27a6b60aba44340020f0c207cb857c04205871744a44340f5c87b4869b857c026efe4ae30a443401dbdc4214bb857c0f49509a011a443400ddb166536b857c037ddb243fca343407098a066a5b757c0d16d7365a3a3434097c3ee3b86b757c0753e3c4b90a34340a669eefc75b757c031bb95dc83a343404f948444dab657c0e2e995b20ca343408b5095cc6fb657c06d80e3dca2a243400a813d1c6eb657c0df7f1e2fa1a24340d97c5c1b2ab657c0774cdd955da24340cfafa96f07b657c0d88572e92ba24340bca6fedad2b557c08bf30994e0a1434091f2936a9fb557c00c7558e196a14340deae2cb482b557c07460339d5fa1434002e9a2aa6eb557c083cccd0b39a1434024ef9db347b557c08f38c40beea0434082bd3c2a41b557c00b3fd376e1a04340a22424d236b557c085ecbc8dcda043405fb7088cf5b457c0a850dd5cfc9f434088b8098ce6b457c01a400127769f43401ba19fa9d7b457c055bfd2f9f09e434069f7ab00dfb457c08fff0241809e43406f072ed2e3b457c0902c3fa8679e4340321c0958efb457c01e72efd52c9e4340153b1a87fab457c09b1da9bef39d434027fcabe1ffb457c0b1a3466fe49d43409536b2c446b557c0322ca9b8199d4340113779b36bb557c088ea0e1bb09c4340ebe3a1ef6eb557c051bccadaa69c43402f12cb496fb557c017be63d6989c434043fd004871b557c09ecb0184499c43407db94e6771b557c0c0211fa6449c43400795b88e71b557c0e6cc76853e9c4340fce07cea58b557c0eca17dace09b434047718e3a3ab557c059fb3bdba39b43404eefe2fdb8b457c0ee23b726dd9a43402750c42286b457c0338cbb41b49a4340e3175e49f2b357c061c614ac719a434093172f1539b357c067f382e45f9a43408f34b8ad2db357c094313ecc5e9a43409a326a9321b357c054da2309629a4340cd75707ccfb257c02d0c54ff779a4340b4e411ce70b257c0c40be153919a434003efe4d363b257c0de3eabcc949a43402cd7db662ab257c0289eb305849a434010cf126404b257c0c119fcfd629a4340951a9356f0b157c0e6442b65469a43400fc29aabdab157c05712b57e279a434082e50819c8b157c01d0247020d9a434089b3226aa2b157c090c18a53ad9943400c16c76056b157c0937ac65477984340406aaac255b157c053342ad0749843406d37c1374db157c059164cfc519843406e15c440d7b057c0e5b9be0f079743406e62484e26b057c0d74812842b964340376a85e97baf57c02e573f36c9954340d0d2156c23af57c04bb1a371a89543403c4b901150ae57c082f6eae3a195434044f7ac6bb4ad57c0f511f8c3cf95434021ca17b490ac57c048a30227db9643409128b4acfbab57c0e4dbbb067d974340a69201a08aab57c000c79e3d97974340f9669b1bd3aa57c00f63d2df4b9743402cbccb457caa57c0c8cedbd8ec964340ba83d89942aa57c0b087f6b182954340722ec55565aa57c03060c9552c94434033d769a4a5a957c0959ba8a5b9934340e7525c55f6a857c0b1f50ce1989343403337df88eea757c04dba2d910b944340f47002d369a757c0862172fa7a94434058ace122f7a657c077f4bf5c8b94434022fb20cb82a657c0f6ab00df6d9443408e95986725a657c094bda59c2f944340151bf33ae2a557c015e46723d793434032755776c1a557c051a1bab9f89143404033880feca557c0d136fe4465914340035aba826da657c00d384bc972904340d1048a58c4a657c05fb87361a48f4340d86322a5d9a657c07c8159a1488f434011c64fe3dea657c0b6f63e55858e43403cc1feebdca657c09fcbd424788b4340edef6c8fdea657c0e7f9d346758a4340fbd1229adda657c0568b2eaa428943403cc1feebdca657c0b29b19fd6888434040a763b4dea657c0f6ade80959874340a29f4860dfa657c0be81d29cf2864340c9f77140e0a657c019bfd10a6d8643405f444595e1a657c024eeb1f4a185434094e92741e2a657c00d68fe883b8543401d990621e3a657c04e367a23b6844340340744b2e3a657c05d454f985f8443406f96b8cde3a657c0b7063a3c4f844340ded4e679e4a657c027907aa3e88343400c410bd0e7a657c0642310afeb814340a518dc12e8a657c0b369dcdec3814340f6f99e56e9a657c01d2ebbf302814340fdf7f1e7eaa657c0877e02d113804340ca74e4fdeaa657c09a3224bd0680434095abc299eca657c0a6520b52117f4340c96772f3eca657c03e931be1db7e434084fff7cdeda657c08c5063ab597e434008040f0feea657c07f4e74e2327e4340a6c53468eea657c09d1abcc3fd7d4340dfc2baf1eea657c01f82aad1ab7d43408926294beea657c0867449dba87c434048eee8f3eda657c0a7fe7135217c4340ea29508eeda657c04ab4f041837b4340c7ecbde0eca657c049a89568757a43407c65deaaeba657c0615111a7937843407c65deaaeba657c09a05da1d527843406c96cb46e7a657c0fcaa5ca8fc774340ffab8e1ce9a657c03f4d2d5beb7743401cbfbc84e9a657c09a18471dda744340bf32e892e9a657c0cd2fe04f6f744340f3a37ba4e9a657c0381ff8d5ea734340443960d5e9a657c03a2c00507a724340306434d8e9a657c0679ab0fd64724340e2783e03eaa657c0e97c789620714340e2783e03eaa657c0263acb2c426f4340e2783e03eaa657c0df3653211e6f43409acc785be9a657c076e272bc026f4340e2783e03eaa657c00b0bee073c6e4340e2783e03eaa657c0f06c8fde706d4340e2783e03eaa657c0e38c614ed06c4340e2783e03eaa657c09cf86a47716c4340d9cef753e3a657c026bd6f7ced694340c483670ce4a657c0b0ff3659b46943402368cc24eaa657c0427bf5f1d0674340af6a4697f3a657c0f34b8a2716644340c4cda96400a757c0029f1f46085f43407516bd5301a757c0d612f241cf5e43408cdbd22c02a757c0442dd6067c5e4340f076541b04a757c09ac58f6ebe5d43409eedba840fa757c020b9445c5e594340a3e3ebe215a757c0ced06657ed56434056c3fc5616a757c0a52c6bd7c0564340c40ab77c24a757c06a334e43545143408369183e22a757c0f451465c00504340f1f274ae28a757c04c546f0d6c4f43404a0a2c8029a757c02b2ff99ffc4d4340186bf27529a757c0b45bbecd8d4d43403e76172829a757c02c11a8fe414a4340d996016729a757c0910a630b414a43405ad93ee42da757c0df516342cc4943401ec18d942da757c075e44867604643406b10e6762fa757c012f6ed2422464340f649519f32a757c0ff2875bf66424340cd052e8f35a757c027a3ca30ee3e43402bda1ce736a757c07d21e4bcff3d4340f698486936a757c03e7782fdd73d434024b5503239a757c04e42e90b213d4340b5e0455f41a757c0533e0455a333434003b2d7bb3fa757c0d00ce2033b324340e8967be73fa757c093845283c13143400e2c47c840a757c0a70183a44f2f4340a38ff98040a757c07cb779e3a42e4340fdf6c6ca3ca757c0c1450744fc2b4340ab1c5a643ba757c0677bf486fb2a4340f54a598638a757c0b01f62838529434066d828eb37a757c0bb09be69fa2843401a89d00836a757c0fddd3b6a4c2843401a89d00836a757c018946934b9264340bcd6774d36a757c0484e49609626434030630ad638a757c0ae264f594d254340b91803eb38a757c08753e6e61b2543405ef0e59a36a757c0b1c96cc2dc22434055a1815836a757c06f8445459c22434097c4591135a757c0e50cc51d6f1e4340a3586e6935a757c0ffcef6e80d1d4340672618ce35a757c0c24eb16a101c43408848b5cc35a757c0a9785011ff1b43407e68e6c935a757c0e98024ecdb1b43403c11c47938a757c06a882afc191a4340d15ad1e638a757c0b7ec10ffb0194340e14389963ca757c0fc17080264184340e74c823c42a757c02b534f0d871543406729594e42a757c04d5e64027e15434011ffb0a547a757c045d4449f8f144340041dad6a49a757c0317a6ea12b13434013580bf749a757c050bf93b372114340d5dd00754aa757c0e937d208e70f4340f12f82c64ca757c0a94e07b29e08434055f5f23b4da757c008e3a7716f0843407fbc57ad4ca757c0e770adf6b007434062d7f6764ba757c0594fadbeba044340e233d93f4fa757c0ea42acfe08ff424058e2016553a757c0c002983270fe42407789762654a757c00b2d07d55cfd424015850a3454a757c0dc3d4d8149fd4240c921e2e654a757c05c1abff04afc424051d7dafb54a757c0454b1e4fcbf942405794128255a757c0b1f50ce198f94240aaee91cd55a757c0e6caa0dae0f842407445292158a757c09a0b5c1e6bf84240ea5be67459a757c0e4141dc9e5f742403813d38558a757c02bf697dd93f74240b80721205fa757c0d57b2aa73df54240fc4b529962a757c092ad2ea704f44240eaac16d863a757c0daacfa5c6df34240dd7c23ba67a757c0e0d7481284f14240dbfae93f6ba757c0100874266df04240f47002d369a757c06bb75d68aeef42408195438b6ca757c0e529abe97aee4240ee0a3f2d71a757c0211e6ccef6ec4240dd99098673a757c0e0f2583332ec4240e2cf5ca473a757c02da82ef9e5eb4240a167b3ea73a757c00938842a35eb42404a09c1aa7aa757c0684128efe3e842400822ebdf87a757c0103f2a6e4ee342405a43a9bd88a757c0026553aef0e2424055fb040489a757c0cb8c6157dfe14240fcb93c2289a757c05d4743f269e1424042cd902a8aa757c0c554fa0967dd4240b8af03e78ca757c061fa5e4370dc42408993fb1d8aa757c09835b1c057d84240de550f9887a757c02db4739a05d84240850a0e2f88a757c0a259d93ee4d7424018ec866d8ba757c0ca6fd1c952d7424025e82ff488a757c0fd86890629d64240d9b27c5d86a757c0fcabc77dabd342404f6ed66985a757c0fe015d386ed242400e4240be84a757c004ff5bc98ed142408714b7ac84a757c099ffd5237ad1424088f4dbd781a757c08eaf3db324ce42409fe8baf083a757c0a41820d104ce42401d588e9081a757c04b5b5ce333c942402315c61682a757c02d5915e126c94240e97e4e417ea757c014b4c9e193c842401ea203c57ea757c09d0dbd7915c842408e19a88c7fa757c04be658de55c742402463b5f97fa757c0cde9b298d8c64240f68a40ac7fa757c0c8e834b2a0c642403ab044bd7ca757c08a79e5b582c442400129b16b7ba757c05859db148fc3424015e2917879a757c0bb44f5d6c0c242404d4ecdf77aa757c06adfa7e5ddc042404e78094e7da757c087f9f202ecbd42406b2920ed7fa757c0b58993fb1dbc4240b3ef8ae07fa757c024809bc58bbb4240ca17b49080a757c0e44ba8e0f0ba42405e7b664980a757c00e7ba180edba4240be839f3880a757c07f4e417e36ba42402a5437177fa757c09818cbf44bb84240cafd0e4581a757c0a4a2b1f677b64240e57adb4c85a757c0e75086aa98b442409e9acb0d86a757c0dbf97e6abcb242408e72df9e86a757c0cb2d9365dcb042404a0c022b87a757c0b265f9ba0caf424032ca332f87a757c0120a117008af42407ac4e8b985a757c02a91442fa3ae42404435255987a757c089b48d3f51ab4240c6f99b5088a757c0a9f57ea31dab4240261c7a8b87a757c0342c465d6ba9424069de718a8ea757c0fa635a9bc69e4240b07092e68fa757c058501894699e4240f279c5538fa757c031ee06d15a9d42406f8104c58fa757c0f243a511339d424003b16ce690a757c02383dc45989a4240037d224f92a757c01920d1048a9a4240b5dfda8992a757c0e52a16bf2998424065dafe9595a757c07c478d0931974240601dc70f95a757c0f9f6ae415f964240bb9c121093a757c0cfba46cb81944240b1a4dc7d8ea757c0026553aef090424069de718a8ea757c00abfd4cf9b90424027a27a0190a757c0f26b4518398f4240aa7f10c990a757c0e3f560527c8e4240573f36c98fa757c04feacbd24e8d4240e7ff55478ea757c0702711e15f8c42403483f8c08ea757c0b3ca4c69fd8b424004ff5bc98ea757c0a52f849cf78b4240e63375b58ea757c034655a5c6e8b4240c30fcea78ea757c0f8a92a34108b4240394030478fa757c0a7cea3e2ff8a424011e15f048da757c045d7851f9c8942402bf83d908ca757c00d4a4b21018942403a7e89748ca757c0b0a28227dc8842408c750fd78ba757c009a576fb09884240d0cf2c938ba757c073428461af874240068195438ba757c0363d282845874240cbf43a4e8ba757c01def0e2136874240a64412bd8ca757c094a3005130854240036a45db8ca757c012872a6b38844240da85e63a8da757c00392b06f27814240ad5a10c48da757c0628aa1429e804240f3936a9f8ea757c019ff3ee3c27f4240272b86ab03a857c028b7ed7bd47f424076374f75c8ac57c0670a9dd7d87f424094dbf63deaac57c0bb641c23d97f4240fbdb3cb785ad57c0b0db0592d87f42407ae40f069ead57c072b8567bd87f424036e47a8e3fae57c0ab1352c6d67f424001d11bc3e6ae57c0128ff401d57f4240938c920a20af57c09f61fd66d47f4240b30a9b012eaf57c076543541d47f424077499c1551af57c05df8c1f9d47f424005af6955beaf57c038144d6bd57f42405cb3c8cdf8af57c093cc11a8d57f4240711f434afdaf57c06a6bbbacd57f424093e52494beb157c00936ae7fd77f4240697407b133b557c01a6d5512d97f4240b99163f337b557c034ce1417d97f4240ca1649bbd1b557c031957ec2d97f42408632ea4f2fb657c03538a3aada7f4240ebc6bb2363b657c03061342bdb7f4240e60297c79ab657c090696d1adb7f42406b5fa30666b957c0c8ec79b2e17f4240b20c0f0ee5b957c058d546dee27f42407e2a02e035bc57c08c636355e87f4240043c69e1b2bf57c0a833f790f07f4240eab298d87cc057c073f22213f07f424017467a51bbc057c08b1a4cc3f07f42402b1213d4f0c157c0e4654d2cf07f42402e3bc43f6cc257c09db98784ef7f4240d18bdafd2ac357c02bdec83cf27f42408cbd175fb4c457c0628731e9ef7f4240e9f9cdc4fec857c082cfc0b7f07f4240eb707495eec957c0cc09dae4f07f4240b4ad669df1c957c09d853dedf07f42402133292b2eca57c0c7cbf6d0f07f424013234be658cb57c055d97745f07f4240836beee87fcc57c0f59cf4bef17f424068ea4a5c25d157c0921459e0ed7f42403dae108c4dd257c04feface9ec7f42406475abe7a4d457c07b7f83f6ea7f42403c4cfbe6fed457c02ee23b31eb7f424033d93f4f03d557c0ff5d9f39eb7f4240ec866d8b32d557c0642310afeb7f4240ce8f5ae724d857c0f7d508f1e87f42401bd880a76ed857c0456b66ace87f4240a708707a17da57c042e90b21e77f424099d6a6b1bde057c06002b7eee67f4240c6611f3f6fe157c0620e1471e87f4240c87c40a033e257c053ec681cea7f424044c362d4b5e457c06a48dc63e97f42402f8d78427fe657c04efab3a6e97f4240b324404d2de757c05f9a22c0e97f4240a59f70766be757c02ee23b31eb7f4240a153e1a8bee757c04145ed17eb7f42407dd0b359f5e757c01d774a07eb7f42405eb9de3653e857c08e1ebfb7e97f42405d182100d7e857c0649db0bbe97f4240ce6c57e883ea57c02f1686c8e97f424050f81d8b23eb57c02f3b262cea7f424086915ed4eeeb57c0292504abea7f4240b35da10f96ec57c01956f146e67f4240e1eeacdd76ed57c010c99063eb7f4240c8edfb757ded57c0f6c4a31eeb7f42407a5567b5c0ed57c0304ad05fe87f4240c4b0c398f4ed57c0a7ae7c96e77f42400229b16b7bef57c0b35c363ae77f424031af5a1ac6ef57c039f19373e77f424048c49448a2f057c0ac6bb41ce87f424016342db132f157c0f67f0ef3e57f424013ef004f5af257c06a48dc63e97f42409cf4bef1b5f357c00953944be37f4240586ec97770f457c08f80a329e47f4240d97bf1457bf757c08995d1c8e77f424044a2d0b2eef757c04772f90fe97f424015a6ef3504f857c0e869c020e97f4240d6a9f23d23f857c089618731e97f42404a5e9d6340fa57c094dbf63dea7f4240ae2cd15966fb57c084d89942e77f424045274badf7fb57c03bf88903e87f424023a01a9bb6fd57c057469a4ce27f4240a0e062450d0058c02ba4fca4da7f42408fb2572b170658c06e310522dd7f424090f7aa95090958c0234be658de7f4240bb63b14d2a0958c02c29779fe37f4240763579ca6a0958c004fef0f3df7f4240aeba0ed5940958c0abb2ef8ae07f4240c11bd2a8c00958c09e0436e7e07f4240ca811e6adb0958c02638f581e47f42403b56293dd30b58c0d8666325e67f424032923d42cd0c58c0e7e44526e07f4240b763eaaeec0d58c016359886e17f424021e9b97b0f0f58c07d779483e37f42403bec1b7b961158c0e6fa03f0e77f42404d6a6803b01158c0ac6bb41ce87f424006802a6edc1158c07ce71725e87f42403e63846d6b1858c08c5b7fa8e67f4240a06ea0c03b1958c0fb3c4679e67f42406c97361c961a58c015014eefe27f424033a5f5b7042058c08eb0a888d37f424029fe25149d2158c0e93e68c3d57f4240bcade4b9a12158c0851ae7c9d57f42404dbfa6ba452358c0cb7aec14d87f424094d7a6ba452358c0ed7aec14d87f4240304f609af72758c037e0bba4de7f42406aa510c8252d58c0558847e2e57f424063997e89782d58c0ac6bb41ce87f4240d7e440cfd82e58c0f6875484e87f4240e123624a242f58c0e2ac889ae87f424060e0b9f7702f58c0a2f14410e77f424013d38558fd2f58c0588cbad6de7f4240111e6d1cb13258c09c685721e57f4240f6b3588ae43258c02ba4fca4da7f42405c1c959ba83458c03d601e32e57f424057ee0566853758c0ba4db857e67f4240f5f3a622153858c0bf0af0dde67f4240c4d155babb3958c04451a04fe47f4240f9669b1bd33958c08c31b08ee37f4240fe98d6a6b13a58c03d601e32e57f424047acc5a7003b58c00262122ee47f4240136b8c1f323b58c00667e08ce37f4240f4ddad2cd13b58c016359886e17f424053060e68e93d58c0a4c16d6de17f42401a4e999b6f3e58c0938ac6dadf7f4240af8c0dddec4158c05303cde7dc7f4240dbb930d28b4258c01d5a643bdf7f4240bbb79580ea4258c01c95cc39df7f4240ba111615714658c07c629d2adf7f42407e703e75ac4658c064062ae3df7f4240c24cdbbfb24758c0821fd5b0df7f42409d6516a1d84758c069c36169e07f4240adfbc742744958c0740987dee27f42400e8d7691ed4c58c09059efe3e07f4240fced5f815f5058c060758aedde7f4240cf36ec92f05558c0fab7c0c1db7f4240b935d92e315758c0154c1e0bdb7f42405a913e035b5758c0c0464af3da7f4240fed5e3bed55758c0fb1f60adda7f42406b9a779ca25858c0556b6116da7f42401266dafe955d58c0bd00fbe8d47f424072a3c85a435e58c00a6af816d67f424051dcf126bf6158c0a3703d0ad77f4240bab88d06f06258c0449c4eb2d57f42401455bfd2f96258c032fd12f1d67f42408a5a9a5b216458c0e69315c3d57f4240f5bc7806476558c011484c5bd57f4240fa9ae5b2d16658c04c8dd0cfd47f4240948444dac66858c05de15d2ee27f42403c4a253ca16958c05e49f25cdf7f42406e685fad4c6c58c072fc6b25da7f4240497a185a9d6c58c07f32c687d97f42407b134372327158c0a3703d0ad77f4240f4a8f8bf237258c05f7d3cf4dd7f4240a6f10baf247258c0965aef37da7f42405ae9b5d9587358c0878bdcd3d57f4240ac8731c5c87d58c0b8b1b1d2cd7f424049a297512c8258c01bb80375ca7f4240ff5bc98e8d8258c0457f68e6c97f4240a7c821e2e68258c05edbdb2dc97f4240202922c32a8758c0790778d2c27f424045b3b030348858c0269d9641c37f4240b56e83da6f8958c0130ebdc5c37f4240a0f99cbb5d8b58c08c0e48c2be7f4240de4927fb2e8c58c01f434c98be7f4240111c9771538d58c0c8409e5dbe7f42404da088450c8e58c0fb9463b2b87f4240797764ac368f58c06e29e78bbd7f42402091b6f1279658c04c530438bd7f424061f7ac4b389658c03b84f436bd7f424062d9cc21a99658c07bd7a02fbd7f4240ef5696e82c9a58c0c0d02346cf7f4240a73d25e7c49a58c019e8da17d07f4240081f4ab4e49a58c031444e5fcf7f4240845bed5c809e58c0dfd0fe7fd67f42402c889d5d129f58c052896ca0d77f42406320cf2edfa258c0ace63922df7f42409c0b83d9d2a758c05ae44313e07f42405f268a90baad58c0f25eb532e17f424085949f54fbad58c09c685721e57f4240d4ee5701beb058c004e78c28ed7f42409b215514afb258c0a7ae7c96e77f42406ede3829ccb258c0dc239babe67f42404e081d7409b358c07d1b62bce67f424033bc330ff5b358c090d7e21be77f42408e226b0da5b758c0e2ac889ae87f4240e2cb441152b858c02a8d98d9e77f4240bf60376c5bb858c09acc785be97f4240d04543c6a3bf58c05ccaf962ef7f4240bd7a6fdd0dc058c0f8c86d01f07f424004e44ba8e0c158c0601f9dbaf27f42406b8cb76bdcc258c02fff847ae97f424095f1ef332ec358c0fb3c4679e67f4240e3344415fec758c0f27b9bfeec7f4240fd5f75e448c858c09373620fed7f424030749d99c9cd58c0d5768274f07f4240d9d4da932cce58c0734d93b1f07f4240b9cf6cdd75ce58c0d28ecadef07f4240f15eb532e1cf58c0f59cf4bef17f4240679c86a8c2d158c05a626534f27f42409d0df96706d858c00e9bc8cc058042400728df520dd858c0da2fcf8905804240fd8c601763d958c0ebafe59cf87f4240d07ea4880cda58c05a626534f27f42409255116e32dd58c074266daaee7f4240e9d7d64fffde58c09b1da9bef37f42403d05c07806e058c0e8ee3a1bf27f42403d05c07806e058c08f6fef1af47f424001f6d1a92be058c0124e0b5ef47f42401f49490f43e058c083c13577f47f42402266f6798ce058c0a69718cbf47f4240569a9ea3a1e258c03f0218fef17f42406d3cd862b7e358c0d8b79388f07f4240dffc868906e858c03be12538f57f42400a9fad8383e958c0b3791c06f37f4240fa7c941117ea58c056478e7406804240c2f40a103beb58c0ec472aa909804240d66358fbd9ec58c0a62c3d370e804240a1922a6e3dee58c01cbc2d1e12804240edf0d7648df158c039d0436d1b804240b91ad99596f158c07bbfd18e1b8042407f880d164ef258c0bb46cb811e804240f06778b306f858c03d5fb35c36804240149ab0d5e9f958c042d0e1223680424093fc885fb1ff58c074d4d1713580424054fcdf11150059c0ccb73eac378042407f4b00fe290059c07e1af7e63780424006d9b27c5d0059c0c5c6bc8e3880424098ca3639ba0559c0d5ea3b89448042405f5b3ffd670759c070ed444948804240a0dd21c5000c59c084f4143944804240b86c74ce4f0c59c013b534b742804240075e2d77660c59c0069fe6e445804240d6187442e80c59c0b378b13044804240da82606d471159c0f58e3cd83a80424029ef6beb501959c091c3e9a92980424010037d9dcb1b59c0ef1c1e5d2480424050ac9d4acc1b59c02f04ac5b24804240a2b023dcf31b59c09206160724804240b99c7f249b1d59c07fed3a7e20804240f76d57c9af2159c0636e15c5178042407fa2b2614d2359c09cdcef5014804240888384285f2359c0357ba01518804240624d6551d82559c006da1d520c804240795be9b5d92559c0bef90d130d8042401f80d4264e2859c05917b7d1008042401e2bf86d882859c0e90b21e7fd7f4240d5af743e3c2b59c0111ac1c6f57f4240c9569753022f59c022e3512ae17f4240792288f3703059c0ab0320eeea7f4240fdc6b63b9f3059c022c793fde87f42401f679ab0fd3059c02cf52c08e57f424012329067973359c02d5dc136e27f4240a438471d1d3459c04b766c04e27f4240deca654c673659c08b397a01d57f42401ed61bb5c23659c0b8770dfad27f4240afc91af5103959c0d0d38041d27f4240e1270ea0df3959c092054ce0d67f4240a91611c5e43959c0d107cbd8d07f4240688d4127843c59c0ef37da71c37f424001874d26543d59c0045a0d90c27f4240821953b0c63f59c009fce1e7bf7f4240ae65321ccf4059c078d32d3bc47f4240399b8e006e4359c05dbef561bd7f424042d13c80454459c0ed7e15e0bb7f4240591bb40c294659c0ed95db8cb67f4240f46393fc884d59c042075dc2a17f42408a01124da04d59c0265646239f7f42408610a604205259c003ab3ed9927f4240d7666325e65659c0037ae1ce857f42402dce18e6045759c0459db987847f42401500e319345859c0edb94c4d827f4240193735d07c5a59c0f646ad307d7f42404bab21718f5a59c0c7f65ad07b7f42408179c8940f5f59c0d844662e707f4240cb9d9960386159c0f0d4230d6e7f4240ae9d2809896359c081fdd7b9697f42408d2958e36c6659c015c26a2c617f42402920ed7f806659c0e1b4e0455f7f4240287d5e8d046b59c024503b91547f4240e97e5e8d046b59c021503b91547f424063a6a990f76d59c004e253934d7f42402aac11cec07059c0786174f8467f424076094923e77459c05a33fd213d7f424076f05400347759c0006ef9ad377f4240b6efd11f637859c095d55cdf347f4240e426700a8e7959c0092bb91a327f42408ba6b393c17959c022fc8ba0317f42400ecc2906ee7959c0b6925c37317f42404821b090da7b59c0d536c0a92c7f42406798da52078059c070e481c8227f42406798da52078059c029047289237f42402aa1bb24ce8159c085eb51b81e7f424051a5660fb48259c0569bff571d7f42401d007157af8259c0376bf0be2a8342404d840d4faf8259c0d2c6116bf183424000016bd5ae8259c04ad3a0681e8442400169ff03ac8259c04e0af31e67844240174339d1ae8259c0a2d288997d8442403bff76d9af8259c0952d9276a38d42406beba7ffac8259c07b849a21558e424016dba4a2b18259c0172829b00090424016c1ff56b28259c0172829b0009042407e3b861eb28259c002710f2a3890424076172829b08259c0be33daaa2492424017299485af8259c0958098840ba14240ea5a7b9faa8259c0c2d32b6519a64240adda3521ad8259c032384a5e9da742401152b7b3af8259c07d923b6c22ad42405ea10f96b18259c02634492c29ad4240f17f4754a88259c0a6b4fe9600b0424078725257a98259c0784bfdfdd0b14240cb41d0d1aa8259c00f59a48977b44240731074b4aa8259c0ab21718fa5b7424072dc291dac8259c043c02154a9b742402afc19deac8259c0a6eeca2e18bc424090db2f9fac8259c00bcf4bc5c6c04240287ae063b08259c081e9b46e83c442400caf2479ae8259c0cb86359545c5424083f92b64ae8259c0c97553ca6bc74240323b8bdea98259c079245e9ececd424044c02154a98259c063b323d577d242408b868c47a98259c0a032fe7dc6d34240209c4f1dab8259c0c748f60835d542404a97fe25a98259c0b282df8618d74240309fac18ae8259c02db29defa7dc4240c18aaef6af8259c03f84d47f88de4240f2d077b7b28259c05ccccf0d4de142407d259012bb8259c0ac3aab05f6e44240f790f0bdbf8259c07e18213cdae6424085e97b0dc18259c08a90ba9d7de9424036e49f19c48259c0fe1f274c18ef42405c9b0838cc8259c0ac3c8d14fef44240f645425bce8259c02a5778978bf642400e881057ce8259c014addc0bccf642409cfd8172db8259c0f37519fed3054340cf6bec12d58259c04b8bfa24770e43405c4d7448d88259c04f39f8c65d0f4340ba30d28bda8259c094490d6d001043409ae411b5d78259c06f8fa00b1a1143402e742502d58259c069a510c825124340077293c2d58259c0e9ae54b6781643408080b56ad78259c03541d47d0020434050897f43d98259c06587ec0d99214340ae9cbd33da8259c08fc536a9682243407efe7bf0da8259c0c1e09a3bfa274340b189cc5ce08259c0037b4ca43431434067244223d88259c042cefbff38354340709a3e3be08259c084640113b8354340536ea296e68259c0d976da1a113a4340012ec896e58259c0ed478ac8b040434019709692e58259c06d8ac745b54043400f2a711de38259c08315a75a0b434340ba8102efe48259c0da54dd239b454340e3486760e48259c0449db98784474340d89aadbce48259c09507e929724a4340aeb9a3ffe58259c0c7f2ae7ac04e434098f90e7ee28259c03eec8502b6554340fdbe7ff3e28259c073486aa16456434097c5c4e6e38259c0454948a46d564340a94a5b5ce38259c03d2cd49ae6574340f7cdfdd5e38259c0a73ffb9122584340c058dfc0e48259c069e21de04959434096438b6ce78259c0758c2b2e8e604340c6fb71fbe58259c02c9b3924b5604340f54bc45be78259c0d9e9077591624340ca6aba9ee88259c0ff791a304864434066d993c0e68259c058aeb7cd546643405fe811a3e78259c0fc69a33a1d684340497cee04fb8259c0aad5575705864340e521533e048359c016a1d80a9a90434036516323058359c0d45441f40a9143401b2fdd24068359c0ef7211df899143409fa1bafd0f8359c0bbb24274329c434088a1d5c9198359c06016da39cda64340f9b31f29228359c0b50f79cbd5af43405c656778248359c0e65304b470b24340b642588d258359c0c1e10511a9b34340d3d9c9e0288359c01a6ec0e787b54340eb1b98dc288359c0a62897c62fb643401213d4f02d8359c04565c39acac04340a19fa9d72d8359c05d876a4ab2c44340b3588ae42b8359c04a6249b9fbc443404bcb54542f8359c00cf369cbb9c8434040498105308359c0eb0088bb7ac943407b134372328359c018b49080d1cb4340116a046e378359c0ce99b77e49d04340ed3f321d3a8359c0b6d26bb3b1d24340fda36fd2348359c0bedd921cb0d34340ecd79dee3c8359c0d8af3bdd79d64340a1b597ec418359c0b5ac2a20f3de43408272dbbe478359c0c3d7d7bad4e843408dec4acb488359c0d33252efa9ea43405d4e0988498359c0ed0f94dbf6eb4340321f10e84c8359c0187d0569c6ec4340e9f010c64f8359c026ab22dc64004440'::geometry, 'T*F**F***')
) LIMIT 21; args=('Lawrence', , 'T*F**F***'); alias=default
SQL failing
SELECT "geoapp_city"."id", "geoapp_city"."name", "geoapp_city"."point" FROM "geoapp_city" WHERE
ST_Relate("geoapp_city"."point", '0103000020e61000000100000032050000e9f010c64f8359c026ab22dc64004440f017b325ab7a59c03c9f01f56600444000750305de7959c0844bc79c67004440a5d5c7c2267759c09bf90c4a5f0044409487855ad37559c0dc79e2395b0044406d003620427559c0228ac91b60004440e199d024b17359c0423f53af5b004440c2f2e7db827359c0d2ff722d5a004440e8ce7d09217259c02345f3a659004440cf1fc54ee76f59c089c860ce58004440485167ee216859c0632827da55004440b82231410d6859c0732b84d558004440f60ae7d6186559c02e49a1fc560044403d20d099b46259c06ed6e07d5500444033a6608db35a59c0dd5cfc6d4f004440cd0cc2a44e5a59c0d2bd8f7b4d00444069f981ab3c5a59c0e481c8224d0044405bd2aeefc95859c0e327899c50004440b8020af5f45759c0cf46ae9b52004440ea08e066f15559c0d5cf9b8a5400444081ae7d01bd5459c03deaaf57580044406094a0bfd05259c0bda772da530044405760c8ea565259c0bda772da530044407c992842ea4f59c0b8ea3a5453004440e4a3c519c34d59c07cb8e4b853004440ddaaeb504d4c59c065c405a05100444062c3040ef64b59c028b26a53510044401fd7868a714b59c0ada415df5000444015addc0bcc4a59c0f9d9c8755300444051f4c0c7604859c04ed026874f0044400111cd81b74659c09cc600154e0044406a0fcd81b74659c09bc600154e0044402499d53bdc4359c0a4c684984b004440a723809bc54159c0211cb3ec490044402fc855df923d59c013dcfc4747004440cbd8d0cdfe3b59c0ca6c904946004440d405c88aee3059c0c04e53444b004440504eb4ab903059c0915b936e4b004440dc662ac4233059c0f333f5ba450044403284c501492f59c0b7f30d054900444068925852ee2e59c087e123624a0044400e4e44bfb62e59c01efb592c45004440b60e0ef6262e59c0efaa07cc43004440467c2766bd2b59c03a78263449004440a2755435412a59c0a0a52bd84600444078978bf84e2959c08db5bfb33d004440cf93d3a7182859c04a0bde053e004440766c04e2752659c045d5af743e0044404a04aa7f102659c00e2c47c8400044401ac39ca04d2459c06f9c14e63d004440b247a819522359c06f9c14e63d0044404e12626bec2059c095cfeb6c3c0044405548f949b52059c08ee9094b3c004440ef3cf19c2d1f59c0249babe6390044409d668176871e59c0ef59d76839004440eeea5564741e59c0f4160fef39004440db0f7860001e59c025cff57d3800444044bde0d39c1c59c0ee258dd13a004440e1d231e7191c59c0d6fd63213a004440a2bb53bcc11959c0863ce0fc3a004440b7b41a12f71859c053ebfd463b004440a596bb6f911259c0fcad996e370044406403e962d30e59c0f1f5b52e350044409a07b0c8af0e59c0e9d0e979370044402e573f36c90d59c0d3dc0a6135004440c8e9ebf99a0c59c0f39194f4300044404ab54fc7630c59c03fc7478b330044404e2b85402e0c59c0d41055f833004440a12e52280b0c59c0344dd87e32004440815eb873610b59c086730d333400444064b0e2546bff58c046ec134031004440edb776a224ff58c087a757ca320044405f09a4c4aefc58c094da8b683b0044405532005471fc58c033198ee7330044409f87da368cfb58c0db3521ad3100444008aa46af06fa58c09946938b31004440e41f80ef68f658c0565854522f004440286211c30ef458c0711b0de02d0044400a5ef415a4f158c0799109f83500444081e3326e6af158c041800c1d3b0044404d49d6e1e8f058c05723bbd232004440f65d11fc6ff058c03d0e83f92b004440c991cec0c8ef58c0473d44a33b004440166407b437ef58c05ab2b4c63b004440d3c08f6ad8ee58c0f89ffcdd3b004440467bbc900eee58c0826f9a3e3b004440a22424d236e858c0b77c24253d004440cdfc6a0e10e858c0e700c11c3d0044400e1e2856fbe058c0ae9ffacf410044403e59315c1de058c0f0de516342004440256f8099efdf58c0c67f812040004440bf2154a9d9df58c027bc04a73e0044401e2e39ee94df58c080d3bb783f00444060915f3fc4de58c0923eada23f004440bcae5fb01bdb58c087e123624a004440e8f692c668da58c05774eb353d0044403ca41820d1d958c08c4d2b854000444097a105c978d758c03f749d4e400044405676c1e09ad258c045a165dd3f004440f04c689258d258c09d84d2174200444039b69e211cd258c04cc631923d004440a9328cbb41d058c00116f9f5430044409179e40f06d058c0c67f812040004440eae8b81ad9cd58c0cc086f0f42004440e07cea58a5cc58c0a2410a9e420044404243ff0417cc58c07f6b274a4200444010e6762ff7cb58c00e2c47c8400044403c889d2974cb58c00e2c47c8400044409a95ed43deca58c0bc0512143f0044400ad5cdc5dfc758c0111956f146004440377172bf43c758c0dba337dc47004440afe8d66b7ac558c0059fe6e445004440dd8bb67f4ac458c07945441d470044406d37c1374dc158c0a3face2f4a004440c2d9ad6532c158c0cd599f724c004440e38dcc237fbf58c00b28d4d347004440dcd440f339be58c02eca6c904900444088f546ad30be58c0e6e95c514a004440598ae42b81bd58c0c79c67ec4b004440b8c667b27fbd58c0575d876a4a004440b2f18e800cbd58c088f189d549004440fe23d3a1d3bb58c09f71e140480044401818ad78fdb558c0e4998cf54c004440edee0686e5b558c06c71db084d004440dc7c23ba67b558c038dc476e4d0044402c5beb8b84b458c068942efd4b00444099d6a6b1bdb158c0f6ecb94c4d00444017d522a298b158c03ecdc98b4c004440f330485aadae58c0ca7d290b49004440e40f069e7bae58c076aa7ccf48004440a5bc564277ad58c0475a2a6f47004440423f53af5bac58c05bb22ac24d0044401503249a40ac58c0ca89761552004440a77686a92dac58c0c9552c7e5300444028486c770fab58c00858ab764d00444029560dc2dcaa58c078978bf84e004440ea025e66d8a958c0b665c0594a00444085b53176c2a958c02eca6c9049004440160e846401a958c006bcccb051004440285f23a572a758c0cf8a69f04e0044406a300dc347a758c055c1a8a44e004440f855b950f9a558c02f833122510044406c425a63d0a458c07072bf4351004440db368c82e0a358c0c8d0b1834a0044404969368fc3a258c0bc22f8df4a004440c8444ab379a158c03ecdc98b4c00444057e677b36ca058c0272abb544c0044406ed39ffd48a058c002116c4d4c004440724bd8e40da058c0129953414c004440f62686e4649f58c0a983bc1e4c004440838f1cb0499c58c00451a8894d0044403684e60a149958c0724fa5004f00444043e73576899158c0bedbbc7152004440b58cd47b2a9158c09548a2975100444040ef8d21009058c0a4c684984b00444067f4e98ca68d58c030eb6221520044403f558506628c58c08141d2a755004440aa2b9fe5798b58c0e2e5e95c5100444056478e74068b58c041226de34f004440874bb0350a8a58c00ac8381f500044402a013109178958c0a7e7dd5850004440227024d0608658c087156ef94800444095d8b5bddd8458c0c1df2f664b004440f60ce198658458c0b5fd2b2b4d004440e47b4622348358c009c03fa54a004440baa46abb098358c029417fa14700444047e2e6b5bc8258c01cc9a2cd47004440df2a4f20ec8058c04626e0d748004440d5b48b69a68058c04d4bac8c4600444042e8a04b387e58c08f6e84454500444065c39acaa27b58c0787aa52c43004440a87004a9147858c0cba0dae04400444022fdf675e07658c0aebb79aa43004440cda96400a87558c086c43d963e004440601dc70f957458c0073bc5aa410044407fdfbf79717458c097fbe42840004440103b53e8bc7158c0b2101d0247004440ab22dc64547158c00e2c47c840004440f4fc69a33a7158c0b5e0455f41004440a1681ec0227158c0e564e25641004440529159b5bf6d58c037c556b340004440f1be95b53e6d58c099ad019b40004440fda8f8cfdf6c58c07c4e1b8940004440a11f9704476758c0ebb2d87a3f004440791a0f47246658c09a7601443f00444049e00fb7fe6558c07da6eb3c3f0044407fd767cefa6058c0336abe4a3e004440eeb25f77ba6058c09372f7393e004440e014562aa86058c07c7e18213c0044407188c7464b5f58c0d63932473f004440a464168acc5e58c09d02056c400044408dee2076a65d58c006077b134300444088f19a57755c58c097fbe42840004440fad346753a5b58c0d882de1b43004440c85a43a9bd5a58c04fe78a52420044403fe603029d5a58c096c79a9141004440c07630629f5758c09c5088804300444006137f14755658c0ce70033e3f004440172d40db6a5658c03eb0e3bf4000444054d1922c6b5058c017b33638330044408d3f51d9b04f58c06ac2f69331004440d6390664af4f58c0f982161230004440d769a4a5f24c58c09f6b5f402f0044401fbfb7e9cf4c58c0b62bf4c132004440bf0e9c33a24b58c087a757ca320044406482bf96914a58c0bf83230732004440d53735b2834a58c0e9dc30fd310044402c6701da174a58c02214f8af310044403e5b8fc2394958c00be1f010310044405b5837de1d4958c0c30df8fc30004440bd4eeacbd24858c06556ef703b0044408f34b8ad2d4358c0c6dd205a2b004440986725adf84158c03d0e83f92b00444024d1cb28964058c0b89388f02f004440b1366796c33a58c0ff172051310044400dc68844a13a58c0b75f3e5931004440029eb470593858c08352b4722f0044404a27124c353858c02907b30930004440b24813ef003858c08352b4722f0044408db62a89ec3758c0234a7b832f0044402cc6a0ee9b3758c096c28c532f004440257d8c108a3358c09f41fee72c00444028d5be245e2c58c085ac3ea428004440daff006bd52758c07b1002f2250044405d8940f50f2758c009185dde1c004440e977616bb62658c02dee3f321d00444052a4ca033c2558c0bd16e48e1f0044403cf4ddad2c2558c0373465a71f0044409c3237df882458c0f3a8f8bf2300444080290307b42358c0d82b2cb81f004440f51263997e2258c09e95b4e21b0044402897c62fbc2158c01ea4a7c821004440cc7a3194131e58c0373465a71f004440f86c1d1cec1d58c0609335ea2100444084471b47ac1d58c008b0c8af1f00444007c03841b51658c0b5932c1c18004440aa969d06761658c0847264d717004440a2937c3be01558c0d6a2713417004440543541d47d1358c0f0366f9c1400444001fc53aa441358c061aa99b5140044409c8713984e0f58c0663387a4160044407024d060530e58c053944be317004440c4211b48170e58c0003acc971700444068a9bc1de10958c0e0675c38100044407c629d2adf0958c040a4dfbe0e0044403903232f6b0958c0daaa24b20f004440cd16105a0f0858c09aefe0270e004440ac8e1ce90c0858c016dd7a4d0f00444057b3cef8be0558c06803b00111004440b4c35f93350558c0c6a354c213004440d89fc4e74e0358c0b29c84d217004440488ac8b08a0158c02fbe688f17004440bd2a901ff10058c04b1f8eb4150044405932c7f2ae0058c04391eee71400444012542976b4ff57c058dc54ca130044406b813d2652fd57c009fb761211004440958f8a2ab3f957c01aea59d20f004440d97bf1457bf857c08750a5660f004440a31d37fc6ef257c0e19ba6cf0e00444097900f7a36f257c0d5edec2b0f0044404d7de2a810eb57c02a7330080b004440064e302929ea57c09ff41d820a004440a3bfb70df0e857c02f04c8cc090044406c210a832ce457c04e3b7c0a070044405adf237ca3dd57c0d1c88d4103004440e02d57dc20dd57c0be2ae7f50200444033a4035beedc57c0ff29a7d802004440b886fdef12dc57c071c9935902004440ecc3129ee7db57c055137d40020044408c521e0048db57c01eed0be401004440a6f67fa6f9da57c0f794abb6010044401a59dccf8cda57c046f8a2770100444016a6ef3504d857c00000000000004440a20227dbc0d557c030849cf7ffff43402a78af88e4d457c0bcd30af4ffff4340c4ebfa05bbd357c05f0839efffff4340287d21e4bcd357c0b6114f7633ff43403997e2aab2d357c01a6a1492ccfe43407b4fe5b4a7d357c004029d499bfe4340e8f351465cd357c05a4b0169fffd4340488ac8b08ad257c02e8d5f7825fd43403656629e95d157c0bc79aa436efc43407ce9edcf45d157c0c66f0a2b15fc4340ea944737c2d057c076f9d687f5fa4340ef6fd05e7dd057c042b456b439fa43405d6c5a2904d057c0f8c5a52a6df94340ddb3aed172cf57c0a7b1bd16f4f84340f8fd9b1727cf57c01d5723bbd2f8434075e95f92cace57c0793e03eacdf84340f48b12f417ce57c0af21382ee3f84340f6622827dacd57c005fbaf73d3f843407d3cf4ddadcd57c00bb265f9baf84340bf982d5915cd57c053ce177b2ff84340f81bedb8e1cc57c0490f43ab93f7434097a8de1ad8cc57c0374f75c8cdf64340c2dd59bbedcc57c0384bc97212f64340319413ed2acd57c011a8fe4124f543402194f77134cd57c0567f8461c0f443403924b55032cd57c0876c205d6cf443404eadbeba2acd57c02063ee5a42f44340e1048ce8f7cc57c00f9ead5dd1f34340bd3ac780eccc57c0e36c3a02b8f343407f8092ecc9cc57c07b5ff91794f34340f55f5416c9cc57c092ff733993f3434042323363c8cc57c074e7667f92f343409163eb19c2cc57c00667f0f78bf34340415c397b67cc57c0c8ea56cf49f34340d7dd3cd521cc57c0d55e44db31f34340d28a6f287ccb57c0a82f4b3b35f34340d34ecde506cb57c02312859675f343407cb262b83aca57c065ff3c0d18f443400759164cfcc957c03143e38920f4434029b57acacdc957c0b17cdd9e0df44340ca9baa78b5c957c084484cba03f443408427f4fa93c957c034f0a31af6f3434098a54fd47cc957c007fe766adff34340b51a12f758c957c0b24cbf44bcf343405cc64d0d34c957c03cd68c0c72f34340a7a78fc01fc957c0ea08e066f1f24340a31ea2d11dc957c09717601f9df243407ec9c6832dc957c02c40db6ad6f143403ca3ad4a22c957c06c718dcf64f143403c32569bffc857c047a30227dbf04340c422861dc6c857c056b439ce6df04340fc8ee1b19fc857c052b7b3af3cf04340629d2adf33c857c0672783a3e4ef434041102043c7c657c0266e15c440ef43409b038843d2c557c0ce3dc36685ee4340425e0f26c5c557c04aef1b5f7bee4340f6436cb070c557c03bfda02e52ee4340c6e061da37c557c0f12f82c64cee43407f0eec361bc557c021e3790552ee43404eb9c2bb5cc357c0a0c1a6cea3ee43406ff25b74b2c257c0693524eeb1ee43408e7747c66ac257c03fa88b14caee43408e04424432c257c05b72a35c01ef434047af06280dc257c01074b4aa25ef434045f6f8f1fbc157c02df9ab4340ef4340d9e21a9fc9c157c04cdf6b088eef4340d4c2fea7a8c157c0ad9b306316f0434055a69883a0c157c09085e81038f0434087e0b88c9bc157c0a2d288997df04340808a54b9a7c157c09afa6e5266f143407a1b9b1da9c157c0be69faec80f1434079a3ee3ea6c157c0834727e698f1434053c42962a1c157c082e67684c1f1434044a33b889dc157c027a089b0e1f143407558e1968fc157c09d103ae812f24340b29699c466c157c095898c206cf243403d380abf38c157c0df4e8ab6d0f24340d901d71533c157c04c2cf015ddf2434048507f972ac157c0ce4271ede4f2434020787c7bd7c057c0f277efa831f343401bb3b50cafc057c0ae16dfb13cf343409bfeec478ac057c04774cfba46f343409e060c923ec057c09124085740f34340227024d060bf57c0ad174339d1f243409a7ed2a258bf57c0cda0158bcff243401498688138bf57c055bfc2f0c8f243400ebe30992abf57c0f4a62215c6f243402af0314b0fbf57c0cd3464d4caf24340c3f50356aebe57c0bbf3b6afdbf2434096ac8a7093be57c0b189cc5ce0f24340f870c971a7bd57c0c79fa86c58f343409df529c764bd57c0356090f469f343401a6efa1557bd57c0e5a24eed65f343407d350708e6bc57c000fc53aa44f343408231225168bc57c03bc780ecf5f24340cd315b0fdcbb57c04fbdd95c67f24340d255babbcebb57c0dead2cd159f24340904df2237ebb57c03618eab0c2f143409e4319aa62bb57c0eb4b361e6cf14340ae2990d959bb57c0526342cc25f14340a3c9c51858bb57c06b054d4bacf04340ab5ca8fc6bbb57c0de054a0a2cf04340c6140ce296bb57c0b2ddf5ebc0ef4340c79bfc169dbb57c04c361e6cb1ef4340ddb1d82615bc57c075914259f8ee434038bc202235bc57c0ed2aa4fca4ee43406021736550bc57c048d9226937ee43407bd2890453bc57c016d86322a5ed43400bb77c2425bc57c09b3dd00a0ced434094fb1d8a02bc57c0a14ca3c9c5ec43402f4ca60a46bb57c0e1b37570b0eb434047c7d5c8aeba57c0af78ea9106eb43406fd05e7d3cba57c04f779e78ceea4340d1890453cdb957c082e2c798bbea43400d39b69e21b957c03d40f7e5ccea434057410c74edb857c0c1012d5dc1ea4340902fa182c3b857c0772e8cf4a2ea43407496598462b857c0aa77b81d1aea4340d5af743e3cb857c056b60f79cbe94340cb49287d21b857c07ff964c570e943405260014c19b857c09ca5643909e9434028486c770fb857c03a048e041ae84340aa08fcbc15b857c0fbf3955251e74340ef02250516b857c058ab764d48e74340eee65df31bb857c040f414992fe74340fe7f9c3061b857c0d5edec2b0fe64340aeba0ed594b857c086afaf75a9e54340fdf84b8bfab857c0e754320054e5434040deab5626b957c02af702b342e54340c3d9d3166dba57c0960357ca27e54340d4c734052fbb57c09589d0d117e54340e700c11c3dbb57c04df1b8a816e543404897b69c42bb57c0a44101a912e54340acd0e93458bb57c0361c7df502e543401ea67d737fbb57c04203b16ce6e443402ae216e68abb57c068d2ce84d7e4434085fcb25c8cbb57c06ce5089dd5e443402dc39a2c95bb57c01570a823cae44340408864c8b1bb57c07cb779e3a4e44340ee9431dab4bb57c0a42305169de4434036da8502d8bb57c0e792c3b743e443407841446adabb57c01c42959a3de44340df8b2fdae3bb57c03f541a31b3e343408978ebfcdbbb57c0ac39403047e3434052c058a4d7bb57c0d2ea96bd36e34340313175e2d0bb57c0f917a02a1de3434051f9d7f2cabb57c0f16778b306e3434035e84b6f7fbb57c0a2b5a2cd71e24340a1fed7a37bbb57c03b48c2056ce243407a1f359e6ebb57c0e1776a2f58e24340d6e6ff5547bb57c0025b25581ce24340c4e788ac22bb57c025484b38f1e143404815c5abacba57c04e24986a66e14340aad72d0263ba57c0154ed2fc31e143408f8cd5e6ffb957c032ffe89b34e1434070fefa9dfab957c06f714b5a37e143403f6a80b4a8b957c01f0e62e161e1434024809bc58bb957c0c0e8f2e670e143400a5ec2a289b957c054250c0c73e14340f14927124cb957c076fd82ddb0e1434011e50b5a48b957c068b3ea73b5e143405453927538b957c07bf486fbc8e14340799109f835b957c0fd6a0e10cce143409fe925c632b957c0a774b0fecfe14340e10cfe7e31b957c0b9ab5791d1e143409109f83592b857c025eb707495e24340dc2e34d769b857c0a2630795b8e2434065fed13769b857c0a2630795b8e243408cbd3830fbb757c0f6724bc0dde24340d386c3d2c0b757c08a00a777f1e2434068ca4e3fa8b757c027a3ca30eee24340247d5a457fb757c07c4276dec6e24340f3052d2460b757c0446cb07092e243405d3123bc3db757c0613596b036e24340b3d0ce6916b757c00de36e10ade14340ac71361d01b757c08198840b79e043408f0ade4c10b757c0082d2bc3f0df434051db865110b757c079af5a99f0df4340f9d346753ab757c0e78f696d1adf4340f9f5436cb0b757c03eeb1a2d07de43402afeef880ab857c04df6cfd380dd4340307f85cc95b857c0ea76f69507dd4340de196d5512b957c087889b53c9dc43404031b2648eb957c018778368addc43400e80bcaba2b957c0be7e7f60afdc434011be3e85b3b957c07f084903b1dc43408a3e1f65c4b957c051d9b0a6b2dc43402eec7acefcb957c08ff0b79ecadc43404bbb8a850cba57c0c78d164cd1dc4340f2630d2919ba57c01f36d5aad6dc4340b648da8d3eba57c084f23e8ee6dc4340f48285414fba57c0367cd9b9f2dc434071c806d2c5ba57c0b0c22d1f49dd43407307b13385bb57c0d23aaa9a20de4340daad65321cbc57c06eb72407ecde43402d8cf4a276bc57c08272dbbe47df43409cf081d3b6bc57c00ece74eb6edf4340afda9b2fb7bc57c00723aa236fdf43405ab741edb7bc57c0329067976fdf434010ccd1e3f7bc57c0b58b69a67bdf4340e814e46723bd57c054feb5bc72df43403dd68c0c72bd57c0b0e600c11cdf4340e39d8d91aebd57c07a7b6537c0de4340c1855685bdbd57c0bbb4835aa9de43405d0f26c5c7bd57c0214f92ae99de4340fc1f05d2cbbd57c009c83da98ede4340fe7d892818be57c036bcfdf1bedd43406854e0641bbe57c07fdb1324b6dd434073eb353d28be57c096e7c1dd59dd43405ef7562426be57c0da1d520c90dc4340a3ad4a22fbbd57c0009013268cda4340815ce2c803be57c0f2d077b7b2d8434026c632fd12be57c087a757ca32d843402043c70e2abe57c0ddd26a48dcd743405823015d78be57c0ca87c8ab3ed743401a51da1b7cbe57c0de3cd52137d743403b8a73d4d1be57c012fa997addd643400859164cfcbe57c0facbeec9c3d64340bb378cea21bf57c0ca3b668db9d643406086a7c865bf57c0ab53c015a7d643408f6d197096bf57c034ba83d899d6434067d1f8cbebbf57c0845412dc97d64340adf9f19716c057c024b726dd96d64340f4454b694bc057c01f5a2fff8cd643408758d6cb84c057c0853acc4682d643405b7a34d593c057c00664af777fd64340bae0e58aa7c057c000cb300b76d64340682b8e6dd8c057c07e6590ab5ed643404f53cbd6fac057c0c0779b374ed6434066bb421f2cc157c001bf469220d6434013a3919d60c157c079c6083fd7d543404a29e8f692c157c0eb6e9eea90d543408ffb56ebc4c157c0067fbf982dd54340c0b167cf65c257c08b321b6492d34340427c60c77fc257c0639ae95e27d34340fc3905f9d9c257c0034356b77ad243400ea48b4d2bc357c09f73b7eba5d14340e1eb6b5d6ac357c0dc10e335afd04340e6ae25e483c357c0ed940ed6ffcf43406e83d28685c357c0b46af3bccfcf4340c713419c87c357c02b2ae27492cf43409662797084c357c012d32ba97bcf434013bd578166c357c0e4089178a4ce4340e992718c64c357c0bff1b56796ce43401aae62135dc357c049cb68e97fce434098874cf910c357c087fa5dd89acd4340040473f4f8c257c0e789e76c01cd4340d5b32094f7c257c03f8ba548becc4340042159c004c357c096253acb2ccc43407bdcb75a27c357c087a3ab7477cb434029eca2e881c357c0fe277ff78eca4340658f5033a4c357c08411fb0450ca4340669fc728cfc357c0960854ff20ca43401fbe4c1421c457c0f98381e7dec943409961cfdb3dc457c008349a23d4c943409caf337a5ec457c0bf5a0af0c7c94340d3872ea86fc457c0eaaeec82c1c943401305fa449ec457c0c7409e5dbec94340f76db79adac457c01dba8c79cfc94340b9ffc874e8c457c04cc11a67d3c943408bb5781fabc557c0e45393d354ca434018601f9dbac557c0b80721205fca4340f24f9fbccdc557c03568d89a5cca43403143e38920c657c006bcccb051ca43409e0c8e9257c657c08c648f5033ca43404711548b6cc657c04af391f31fca43403c747b5f84c657c09de34bf309ca434004029d499bc657c0a69718cbf4c943405c957081cac657c099b24b95a9c94340b832c1b7ccc657c02939410fa6c94340fc045e33cdc657c0108a5c4aa5c9434049861c5bcfc657c0b37a87dba1c94340c3f4bd86e0c657c0ee04fbaf73c943409a03f3b9f8c657c0b61b2512f5c84340e893d367fcc657c0116c2ad2e1c8434021c24e9e38c757c01a0754c8a6c74340f63bfe6339c757c0ac8905bea2c74340823b50a73cc757c0a38e8eab91c74340f7166ab33fc757c0b52d5fbf4fc74340bd47b2db43c757c01e9767cff5c64340d74e948444c757c0ee74e789e7c643405d4a1cce40c757c069aa1730d3c643403142403c05c757c0e311edaa8cc543409b5434d6fec657c0400e4a9869c543409a780778d2c657c095bbcff1d1c443409a5154a7cec657c08d2d4613c9c44340ec6943c5cdc657c09ad7bc05c7c44340a7c98cb795c657c0b935e9b644c4434032d77e8d30c657c01d498acd8fc34340e2500eb719c657c03a2261f666c34340560dc2dceec557c0761c3f541ac34340f73aa92f4bc557c0b2b96a9e23c24340a69718cbf4c457c0cf656a12bcc14340cb988235cec357c0b70c384bc9c043408009dcba9bc357c0c30c8d2782c043409d2633de56c357c0be1072deffbf4340d5af743e3cc357c0ada6eb89aebf43409f3715a930c357c06ed39ffd48bf4340e2067c7e18c357c0132c0e677ebd4340fe63213a04c357c032c687d9cbbc4340da39cd02edc257c0b6d9588979bc43402d95b7239cc257c0c823b891b2bb43406566666666c257c0ea4141295abb43402fdb4e5b23c257c071c119fcfdba4340178046e9d2c157c04a97fe25a9ba4340645ddc4603c157c0d02a33a5f5b94340d099b4a9babf57c0717500c45db943408e5a61fa5ebf57c051dec7d11cb943409cfd8172dbbe57c0fc17080264b84340f9d85da0a4be57c05116bebed6b74340f4c473b680be57c0d3156c239eb64340fb2477d844be57c0a4c7ef6dfab54340480e84aefcbd57c0b3dad6d99db54340d481f704e3bd57c034ddcfed7cb54340c3f17c06d4bd57c0b28174b169b54340010f2c9dc9bd57c0d8086d5163b543408d2ac3b81bbd57c0aad216d7f8b443404caab69be0bc57c06244a2d0b2b443409143c4cda9bc57c0e481c8224db44340c1db831090bc57c069e04735ecb343406c97361c96bc57c0df5339ed29b34340e6e5b0fb8ebc57c0295dfa97a4b2434063b6645584bc57c09a3fa6b569b243409e23f25d4abc57c090696d1adbb143408ec9e2fe23bc57c0d93d7958a8b1434018f2bf8f0bbc57c01eecb6088db14340ccdbfd770bbc57c04e9728ee8cb143404a5198720bbc57c0105b20e88cb14340d24b8c65fabb57c0f1f109d979b14340147651f4c0bb57c0438d429259b14340c6e44fafa8bb57c00efde4b754b143401327f73b14bb57c06dc9aa0837b14340992a1895d4ba57c07fa2b2614db14340d32f116f9dba57c00070ecd973b1434008043a9336ba57c08fc70c54c6b14340f5f1d077b7b957c094f7713447b243400e4f2e695fb957c079d51af15ab24340d6e6ff5547b957c0d5ec815660b2434079060dfd13b957c0bb0b941458b24340d2c3d0eae4b857c0b2f336363bb2434051052df2d5b857c07f87613f27b2434005871744a4b857c05b79c9ffe4b143409e5dbef561b857c0cafb389a23b14340a1bfd02346b857c061d68ba19cb04340969350fa42b857c02901310917b043402900c63368b857c047ffcbb568af434057790261a7b857c076c58cf0f6ae4340cec5dff604b957c076dd5b9198ae434067800bb265b957c038842a357bae43406c94f59b89b957c03e07962364ae43403defc682c2b957c06684b70721ae43408a0b38ed0eba57c02f26cee0acad434092b06f2711ba57c0562b137ea9ad43405f65cca614ba57c0009a5447a1ad4340096ccec133ba57c0e4b8533a58ad43407573f1b73dba57c084b7072120ad434090363fbd3eba57c0608ac75c12ad434037f78e2b40ba57c061224510ffac4340f8f9b94741ba57c0a024a517f0ac4340645930f147ba57c0ad86c43d96ac43408d0f7c593eba57c015fd107edeab434006ab02df27ba57c0363e81e92faa43401a69a9bc1dba57c06ff607ca6da943402ff28cb905ba57c0a313a03aa0a8434066d7e39dfbb957c03db882b249a843402e303183f4b957c0c9da3be10ca84340b4c70be9f0b957c0fdf50a0beea743405c9b6c0ae5b957c074e17087b0a743406fb94876d4b957c0f010439c5aa74340afb321ffccb957c01bd7bfeb33a74340f39337f5bfb957c04642a19300a7434030e7c4f7a4b957c032ec704b96a643403a521b8b9fb957c0611222ef80a643400af31e679ab957c0ab4203b16ca64340b0743e3c4bb957c05b1c959ba8a54340fcadd176ecb857c0a867381ff5a443401e6e8786c5b857c0a27a6b60aba44340020f0c207cb857c04205871744a44340f5c87b4869b857c026efe4ae30a443401dbdc4214bb857c0f49509a011a443400ddb166536b857c037ddb243fca343407098a066a5b757c0d16d7365a3a3434097c3ee3b86b757c0753e3c4b90a34340a669eefc75b757c031bb95dc83a343404f948444dab657c0e2e995b20ca343408b5095cc6fb657c06d80e3dca2a243400a813d1c6eb657c0df7f1e2fa1a24340d97c5c1b2ab657c0774cdd955da24340cfafa96f07b657c0d88572e92ba24340bca6fedad2b557c08bf30994e0a1434091f2936a9fb557c00c7558e196a14340deae2cb482b557c07460339d5fa1434002e9a2aa6eb557c083cccd0b39a1434024ef9db347b557c08f38c40beea0434082bd3c2a41b557c00b3fd376e1a04340a22424d236b557c085ecbc8dcda043405fb7088cf5b457c0a850dd5cfc9f434088b8098ce6b457c01a400127769f43401ba19fa9d7b457c055bfd2f9f09e434069f7ab00dfb457c08fff0241809e43406f072ed2e3b457c0902c3fa8679e4340321c0958efb457c01e72efd52c9e4340153b1a87fab457c09b1da9bef39d434027fcabe1ffb457c0b1a3466fe49d43409536b2c446b557c0322ca9b8199d4340113779b36bb557c088ea0e1bb09c4340ebe3a1ef6eb557c051bccadaa69c43402f12cb496fb557c017be63d6989c434043fd004871b557c09ecb0184499c43407db94e6771b557c0c0211fa6449c43400795b88e71b557c0e6cc76853e9c4340fce07cea58b557c0eca17dace09b434047718e3a3ab557c059fb3bdba39b43404eefe2fdb8b457c0ee23b726dd9a43402750c42286b457c0338cbb41b49a4340e3175e49f2b357c061c614ac719a434093172f1539b357c067f382e45f9a43408f34b8ad2db357c094313ecc5e9a43409a326a9321b357c054da2309629a4340cd75707ccfb257c02d0c54ff779a4340b4e411ce70b257c0c40be153919a434003efe4d363b257c0de3eabcc949a43402cd7db662ab257c0289eb305849a434010cf126404b257c0c119fcfd629a4340951a9356f0b157c0e6442b65469a43400fc29aabdab157c05712b57e279a434082e50819c8b157c01d0247020d9a434089b3226aa2b157c090c18a53ad9943400c16c76056b157c0937ac65477984340406aaac255b157c053342ad0749843406d37c1374db157c059164cfc519843406e15c440d7b057c0e5b9be0f079743406e62484e26b057c0d74812842b964340376a85e97baf57c02e573f36c9954340d0d2156c23af57c04bb1a371a89543403c4b901150ae57c082f6eae3a195434044f7ac6bb4ad57c0f511f8c3cf95434021ca17b490ac57c048a30227db9643409128b4acfbab57c0e4dbbb067d974340a69201a08aab57c000c79e3d97974340f9669b1bd3aa57c00f63d2df4b9743402cbccb457caa57c0c8cedbd8ec964340ba83d89942aa57c0b087f6b182954340722ec55565aa57c03060c9552c94434033d769a4a5a957c0959ba8a5b9934340e7525c55f6a857c0b1f50ce1989343403337df88eea757c04dba2d910b944340f47002d369a757c0862172fa7a94434058ace122f7a657c077f4bf5c8b94434022fb20cb82a657c0f6ab00df6d9443408e95986725a657c094bda59c2f944340151bf33ae2a557c015e46723d793434032755776c1a557c051a1bab9f89143404033880feca557c0d136fe4465914340035aba826da657c00d384bc972904340d1048a58c4a657c05fb87361a48f4340d86322a5d9a657c07c8159a1488f434011c64fe3dea657c0b6f63e55858e43403cc1feebdca657c09fcbd424788b4340edef6c8fdea657c0e7f9d346758a4340fbd1229adda657c0568b2eaa428943403cc1feebdca657c0b29b19fd6888434040a763b4dea657c0f6ade80959874340a29f4860dfa657c0be81d29cf2864340c9f77140e0a657c019bfd10a6d8643405f444595e1a657c024eeb1f4a185434094e92741e2a657c00d68fe883b8543401d990621e3a657c04e367a23b6844340340744b2e3a657c05d454f985f8443406f96b8cde3a657c0b7063a3c4f844340ded4e679e4a657c027907aa3e88343400c410bd0e7a657c0642310afeb814340a518dc12e8a657c0b369dcdec3814340f6f99e56e9a657c01d2ebbf302814340fdf7f1e7eaa657c0877e02d113804340ca74e4fdeaa657c09a3224bd0680434095abc299eca657c0a6520b52117f4340c96772f3eca657c03e931be1db7e434084fff7cdeda657c08c5063ab597e434008040f0feea657c07f4e74e2327e4340a6c53468eea657c09d1abcc3fd7d4340dfc2baf1eea657c01f82aad1ab7d43408926294beea657c0867449dba87c434048eee8f3eda657c0a7fe7135217c4340ea29508eeda657c04ab4f041837b4340c7ecbde0eca657c049a89568757a43407c65deaaeba657c0615111a7937843407c65deaaeba657c09a05da1d527843406c96cb46e7a657c0fcaa5ca8fc774340ffab8e1ce9a657c03f4d2d5beb7743401cbfbc84e9a657c09a18471dda744340bf32e892e9a657c0cd2fe04f6f744340f3a37ba4e9a657c0381ff8d5ea734340443960d5e9a657c03a2c00507a724340306434d8e9a657c0679ab0fd64724340e2783e03eaa657c0e97c789620714340e2783e03eaa657c0263acb2c426f4340e2783e03eaa657c0df3653211e6f43409acc785be9a657c076e272bc026f4340e2783e03eaa657c00b0bee073c6e4340e2783e03eaa657c0f06c8fde706d4340e2783e03eaa657c0e38c614ed06c4340e2783e03eaa657c09cf86a47716c4340d9cef753e3a657c026bd6f7ced694340c483670ce4a657c0b0ff3659b46943402368cc24eaa657c0427bf5f1d0674340af6a4697f3a657c0f34b8a2716644340c4cda96400a757c0029f1f46085f43407516bd5301a757c0d612f241cf5e43408cdbd22c02a757c0442dd6067c5e4340f076541b04a757c09ac58f6ebe5d43409eedba840fa757c020b9445c5e594340a3e3ebe215a757c0ced06657ed56434056c3fc5616a757c0a52c6bd7c0564340c40ab77c24a757c06a334e43545143408369183e22a757c0f451465c00504340f1f274ae28a757c04c546f0d6c4f43404a0a2c8029a757c02b2ff99ffc4d4340186bf27529a757c0b45bbecd8d4d43403e76172829a757c02c11a8fe414a4340d996016729a757c0910a630b414a43405ad93ee42da757c0df516342cc4943401ec18d942da757c075e44867604643406b10e6762fa757c012f6ed2422464340f649519f32a757c0ff2875bf66424340cd052e8f35a757c027a3ca30ee3e43402bda1ce736a757c07d21e4bcff3d4340f698486936a757c03e7782fdd73d434024b5503239a757c04e42e90b213d4340b5e0455f41a757c0533e0455a333434003b2d7bb3fa757c0d00ce2033b324340e8967be73fa757c093845283c13143400e2c47c840a757c0a70183a44f2f4340a38ff98040a757c07cb779e3a42e4340fdf6c6ca3ca757c0c1450744fc2b4340ab1c5a643ba757c0677bf486fb2a4340f54a598638a757c0b01f62838529434066d828eb37a757c0bb09be69fa2843401a89d00836a757c0fddd3b6a4c2843401a89d00836a757c018946934b9264340bcd6774d36a757c0484e49609626434030630ad638a757c0ae264f594d254340b91803eb38a757c08753e6e61b2543405ef0e59a36a757c0b1c96cc2dc22434055a1815836a757c06f8445459c22434097c4591135a757c0e50cc51d6f1e4340a3586e6935a757c0ffcef6e80d1d4340672618ce35a757c0c24eb16a101c43408848b5cc35a757c0a9785011ff1b43407e68e6c935a757c0e98024ecdb1b43403c11c47938a757c06a882afc191a4340d15ad1e638a757c0b7ec10ffb0194340e14389963ca757c0fc17080264184340e74c823c42a757c02b534f0d871543406729594e42a757c04d5e64027e15434011ffb0a547a757c045d4449f8f144340041dad6a49a757c0317a6ea12b13434013580bf749a757c050bf93b372114340d5dd00754aa757c0e937d208e70f4340f12f82c64ca757c0a94e07b29e08434055f5f23b4da757c008e3a7716f0843407fbc57ad4ca757c0e770adf6b007434062d7f6764ba757c0594fadbeba044340e233d93f4fa757c0ea42acfe08ff424058e2016553a757c0c002983270fe42407789762654a757c00b2d07d55cfd424015850a3454a757c0dc3d4d8149fd4240c921e2e654a757c05c1abff04afc424051d7dafb54a757c0454b1e4fcbf942405794128255a757c0b1f50ce198f94240aaee91cd55a757c0e6caa0dae0f842407445292158a757c09a0b5c1e6bf84240ea5be67459a757c0e4141dc9e5f742403813d38558a757c02bf697dd93f74240b80721205fa757c0d57b2aa73df54240fc4b529962a757c092ad2ea704f44240eaac16d863a757c0daacfa5c6df34240dd7c23ba67a757c0e0d7481284f14240dbfae93f6ba757c0100874266df04240f47002d369a757c06bb75d68aeef42408195438b6ca757c0e529abe97aee4240ee0a3f2d71a757c0211e6ccef6ec4240dd99098673a757c0e0f2583332ec4240e2cf5ca473a757c02da82ef9e5eb4240a167b3ea73a757c00938842a35eb42404a09c1aa7aa757c0684128efe3e842400822ebdf87a757c0103f2a6e4ee342405a43a9bd88a757c0026553aef0e2424055fb040489a757c0cb8c6157dfe14240fcb93c2289a757c05d4743f269e1424042cd902a8aa757c0c554fa0967dd4240b8af03e78ca757c061fa5e4370dc42408993fb1d8aa757c09835b1c057d84240de550f9887a757c02db4739a05d84240850a0e2f88a757c0a259d93ee4d7424018ec866d8ba757c0ca6fd1c952d7424025e82ff488a757c0fd86890629d64240d9b27c5d86a757c0fcabc77dabd342404f6ed66985a757c0fe015d386ed242400e4240be84a757c004ff5bc98ed142408714b7ac84a757c099ffd5237ad1424088f4dbd781a757c08eaf3db324ce42409fe8baf083a757c0a41820d104ce42401d588e9081a757c04b5b5ce333c942402315c61682a757c02d5915e126c94240e97e4e417ea757c014b4c9e193c842401ea203c57ea757c09d0dbd7915c842408e19a88c7fa757c04be658de55c742402463b5f97fa757c0cde9b298d8c64240f68a40ac7fa757c0c8e834b2a0c642403ab044bd7ca757c08a79e5b582c442400129b16b7ba757c05859db148fc3424015e2917879a757c0bb44f5d6c0c242404d4ecdf77aa757c06adfa7e5ddc042404e78094e7da757c087f9f202ecbd42406b2920ed7fa757c0b58993fb1dbc4240b3ef8ae07fa757c024809bc58bbb4240ca17b49080a757c0e44ba8e0f0ba42405e7b664980a757c00e7ba180edba4240be839f3880a757c07f4e417e36ba42402a5437177fa757c09818cbf44bb84240cafd0e4581a757c0a4a2b1f677b64240e57adb4c85a757c0e75086aa98b442409e9acb0d86a757c0dbf97e6abcb242408e72df9e86a757c0cb2d9365dcb042404a0c022b87a757c0b265f9ba0caf424032ca332f87a757c0120a117008af42407ac4e8b985a757c02a91442fa3ae42404435255987a757c089b48d3f51ab4240c6f99b5088a757c0a9f57ea31dab4240261c7a8b87a757c0342c465d6ba9424069de718a8ea757c0fa635a9bc69e4240b07092e68fa757c058501894699e4240f279c5538fa757c031ee06d15a9d42406f8104c58fa757c0f243a511339d424003b16ce690a757c02383dc45989a4240037d224f92a757c01920d1048a9a4240b5dfda8992a757c0e52a16bf2998424065dafe9595a757c07c478d0931974240601dc70f95a757c0f9f6ae415f964240bb9c121093a757c0cfba46cb81944240b1a4dc7d8ea757c0026553aef090424069de718a8ea757c00abfd4cf9b90424027a27a0190a757c0f26b4518398f4240aa7f10c990a757c0e3f560527c8e4240573f36c98fa757c04feacbd24e8d4240e7ff55478ea757c0702711e15f8c42403483f8c08ea757c0b3ca4c69fd8b424004ff5bc98ea757c0a52f849cf78b4240e63375b58ea757c034655a5c6e8b4240c30fcea78ea757c0f8a92a34108b4240394030478fa757c0a7cea3e2ff8a424011e15f048da757c045d7851f9c8942402bf83d908ca757c00d4a4b21018942403a7e89748ca757c0b0a28227dc8842408c750fd78ba757c009a576fb09884240d0cf2c938ba757c073428461af874240068195438ba757c0363d282845874240cbf43a4e8ba757c01def0e2136874240a64412bd8ca757c094a3005130854240036a45db8ca757c012872a6b38844240da85e63a8da757c00392b06f27814240ad5a10c48da757c0628aa1429e804240f3936a9f8ea757c019ff3ee3c27f4240272b86ab03a857c028b7ed7bd47f424076374f75c8ac57c0670a9dd7d87f424094dbf63deaac57c0bb641c23d97f4240fbdb3cb785ad57c0b0db0592d87f42407ae40f069ead57c072b8567bd87f424036e47a8e3fae57c0ab1352c6d67f424001d11bc3e6ae57c0128ff401d57f4240938c920a20af57c09f61fd66d47f4240b30a9b012eaf57c076543541d47f424077499c1551af57c05df8c1f9d47f424005af6955beaf57c038144d6bd57f42405cb3c8cdf8af57c093cc11a8d57f4240711f434afdaf57c06a6bbbacd57f424093e52494beb157c00936ae7fd77f4240697407b133b557c01a6d5512d97f4240b99163f337b557c034ce1417d97f4240ca1649bbd1b557c031957ec2d97f42408632ea4f2fb657c03538a3aada7f4240ebc6bb2363b657c03061342bdb7f4240e60297c79ab657c090696d1adb7f42406b5fa30666b957c0c8ec79b2e17f4240b20c0f0ee5b957c058d546dee27f42407e2a02e035bc57c08c636355e87f4240043c69e1b2bf57c0a833f790f07f4240eab298d87cc057c073f22213f07f424017467a51bbc057c08b1a4cc3f07f42402b1213d4f0c157c0e4654d2cf07f42402e3bc43f6cc257c09db98784ef7f4240d18bdafd2ac357c02bdec83cf27f42408cbd175fb4c457c0628731e9ef7f4240e9f9cdc4fec857c082cfc0b7f07f4240eb707495eec957c0cc09dae4f07f4240b4ad669df1c957c09d853dedf07f42402133292b2eca57c0c7cbf6d0f07f424013234be658cb57c055d97745f07f4240836beee87fcc57c0f59cf4bef17f424068ea4a5c25d157c0921459e0ed7f42403dae108c4dd257c04feface9ec7f42406475abe7a4d457c07b7f83f6ea7f42403c4cfbe6fed457c02ee23b31eb7f424033d93f4f03d557c0ff5d9f39eb7f4240ec866d8b32d557c0642310afeb7f4240ce8f5ae724d857c0f7d508f1e87f42401bd880a76ed857c0456b66ace87f4240a708707a17da57c042e90b21e77f424099d6a6b1bde057c06002b7eee67f4240c6611f3f6fe157c0620e1471e87f4240c87c40a033e257c053ec681cea7f424044c362d4b5e457c06a48dc63e97f42402f8d78427fe657c04efab3a6e97f4240b324404d2de757c05f9a22c0e97f4240a59f70766be757c02ee23b31eb7f4240a153e1a8bee757c04145ed17eb7f42407dd0b359f5e757c01d774a07eb7f42405eb9de3653e857c08e1ebfb7e97f42405d182100d7e857c0649db0bbe97f4240ce6c57e883ea57c02f1686c8e97f424050f81d8b23eb57c02f3b262cea7f424086915ed4eeeb57c0292504abea7f4240b35da10f96ec57c01956f146e67f4240e1eeacdd76ed57c010c99063eb7f4240c8edfb757ded57c0f6c4a31eeb7f42407a5567b5c0ed57c0304ad05fe87f4240c4b0c398f4ed57c0a7ae7c96e77f42400229b16b7bef57c0b35c363ae77f424031af5a1ac6ef57c039f19373e77f424048c49448a2f057c0ac6bb41ce87f424016342db132f157c0f67f0ef3e57f424013ef004f5af257c06a48dc63e97f42409cf4bef1b5f357c00953944be37f4240586ec97770f457c08f80a329e47f4240d97bf1457bf757c08995d1c8e77f424044a2d0b2eef757c04772f90fe97f424015a6ef3504f857c0e869c020e97f4240d6a9f23d23f857c089618731e97f42404a5e9d6340fa57c094dbf63dea7f4240ae2cd15966fb57c084d89942e77f424045274badf7fb57c03bf88903e87f424023a01a9bb6fd57c057469a4ce27f4240a0e062450d0058c02ba4fca4da7f42408fb2572b170658c06e310522dd7f424090f7aa95090958c0234be658de7f4240bb63b14d2a0958c02c29779fe37f4240763579ca6a0958c004fef0f3df7f4240aeba0ed5940958c0abb2ef8ae07f4240c11bd2a8c00958c09e0436e7e07f4240ca811e6adb0958c02638f581e47f42403b56293dd30b58c0d8666325e67f424032923d42cd0c58c0e7e44526e07f4240b763eaaeec0d58c016359886e17f424021e9b97b0f0f58c07d779483e37f42403bec1b7b961158c0e6fa03f0e77f42404d6a6803b01158c0ac6bb41ce87f424006802a6edc1158c07ce71725e87f42403e63846d6b1858c08c5b7fa8e67f4240a06ea0c03b1958c0fb3c4679e67f42406c97361c961a58c015014eefe27f424033a5f5b7042058c08eb0a888d37f424029fe25149d2158c0e93e68c3d57f4240bcade4b9a12158c0851ae7c9d57f42404dbfa6ba452358c0cb7aec14d87f424094d7a6ba452358c0ed7aec14d87f4240304f609af72758c037e0bba4de7f42406aa510c8252d58c0558847e2e57f424063997e89782d58c0ac6bb41ce87f4240d7e440cfd82e58c0f6875484e87f4240e123624a242f58c0e2ac889ae87f424060e0b9f7702f58c0a2f14410e77f424013d38558fd2f58c0588cbad6de7f4240111e6d1cb13258c09c685721e57f4240f6b3588ae43258c02ba4fca4da7f42405c1c959ba83458c03d601e32e57f424057ee0566853758c0ba4db857e67f4240f5f3a622153858c0bf0af0dde67f4240c4d155babb3958c04451a04fe47f4240f9669b1bd33958c08c31b08ee37f4240fe98d6a6b13a58c03d601e32e57f424047acc5a7003b58c00262122ee47f4240136b8c1f323b58c00667e08ce37f4240f4ddad2cd13b58c016359886e17f424053060e68e93d58c0a4c16d6de17f42401a4e999b6f3e58c0938ac6dadf7f4240af8c0dddec4158c05303cde7dc7f4240dbb930d28b4258c01d5a643bdf7f4240bbb79580ea4258c01c95cc39df7f4240ba111615714658c07c629d2adf7f42407e703e75ac4658c064062ae3df7f4240c24cdbbfb24758c0821fd5b0df7f42409d6516a1d84758c069c36169e07f4240adfbc742744958c0740987dee27f42400e8d7691ed4c58c09059efe3e07f4240fced5f815f5058c060758aedde7f4240cf36ec92f05558c0fab7c0c1db7f4240b935d92e315758c0154c1e0bdb7f42405a913e035b5758c0c0464af3da7f4240fed5e3bed55758c0fb1f60adda7f42406b9a779ca25858c0556b6116da7f42401266dafe955d58c0bd00fbe8d47f424072a3c85a435e58c00a6af816d67f424051dcf126bf6158c0a3703d0ad77f4240bab88d06f06258c0449c4eb2d57f42401455bfd2f96258c032fd12f1d67f42408a5a9a5b216458c0e69315c3d57f4240f5bc7806476558c011484c5bd57f4240fa9ae5b2d16658c04c8dd0cfd47f4240948444dac66858c05de15d2ee27f42403c4a253ca16958c05e49f25cdf7f42406e685fad4c6c58c072fc6b25da7f4240497a185a9d6c58c07f32c687d97f42407b134372327158c0a3703d0ad77f4240f4a8f8bf237258c05f7d3cf4dd7f4240a6f10baf247258c0965aef37da7f42405ae9b5d9587358c0878bdcd3d57f4240ac8731c5c87d58c0b8b1b1d2cd7f424049a297512c8258c01bb80375ca7f4240ff5bc98e8d8258c0457f68e6c97f4240a7c821e2e68258c05edbdb2dc97f4240202922c32a8758c0790778d2c27f424045b3b030348858c0269d9641c37f4240b56e83da6f8958c0130ebdc5c37f4240a0f99cbb5d8b58c08c0e48c2be7f4240de4927fb2e8c58c01f434c98be7f4240111c9771538d58c0c8409e5dbe7f42404da088450c8e58c0fb9463b2b87f4240797764ac368f58c06e29e78bbd7f42402091b6f1279658c04c530438bd7f424061f7ac4b389658c03b84f436bd7f424062d9cc21a99658c07bd7a02fbd7f4240ef5696e82c9a58c0c0d02346cf7f4240a73d25e7c49a58c019e8da17d07f4240081f4ab4e49a58c031444e5fcf7f4240845bed5c809e58c0dfd0fe7fd67f42402c889d5d129f58c052896ca0d77f42406320cf2edfa258c0ace63922df7f42409c0b83d9d2a758c05ae44313e07f42405f268a90baad58c0f25eb532e17f424085949f54fbad58c09c685721e57f4240d4ee5701beb058c004e78c28ed7f42409b215514afb258c0a7ae7c96e77f42406ede3829ccb258c0dc239babe67f42404e081d7409b358c07d1b62bce67f424033bc330ff5b358c090d7e21be77f42408e226b0da5b758c0e2ac889ae87f4240e2cb441152b858c02a8d98d9e77f4240bf60376c5bb858c09acc785be97f4240d04543c6a3bf58c05ccaf962ef7f4240bd7a6fdd0dc058c0f8c86d01f07f424004e44ba8e0c158c0601f9dbaf27f42406b8cb76bdcc258c02fff847ae97f424095f1ef332ec358c0fb3c4679e67f4240e3344415fec758c0f27b9bfeec7f4240fd5f75e448c858c09373620fed7f424030749d99c9cd58c0d5768274f07f4240d9d4da932cce58c0734d93b1f07f4240b9cf6cdd75ce58c0d28ecadef07f4240f15eb532e1cf58c0f59cf4bef17f4240679c86a8c2d158c05a626534f27f42409d0df96706d858c00e9bc8cc058042400728df520dd858c0da2fcf8905804240fd8c601763d958c0ebafe59cf87f4240d07ea4880cda58c05a626534f27f42409255116e32dd58c074266daaee7f4240e9d7d64fffde58c09b1da9bef37f42403d05c07806e058c0e8ee3a1bf27f42403d05c07806e058c08f6fef1af47f424001f6d1a92be058c0124e0b5ef47f42401f49490f43e058c083c13577f47f42402266f6798ce058c0a69718cbf47f4240569a9ea3a1e258c03f0218fef17f42406d3cd862b7e358c0d8b79388f07f4240dffc868906e858c03be12538f57f42400a9fad8383e958c0b3791c06f37f4240fa7c941117ea58c056478e7406804240c2f40a103beb58c0ec472aa909804240d66358fbd9ec58c0a62c3d370e804240a1922a6e3dee58c01cbc2d1e12804240edf0d7648df158c039d0436d1b804240b91ad99596f158c07bbfd18e1b8042407f880d164ef258c0bb46cb811e804240f06778b306f858c03d5fb35c36804240149ab0d5e9f958c042d0e1223680424093fc885fb1ff58c074d4d1713580424054fcdf11150059c0ccb73eac378042407f4b00fe290059c07e1af7e63780424006d9b27c5d0059c0c5c6bc8e3880424098ca3639ba0559c0d5ea3b89448042405f5b3ffd670759c070ed444948804240a0dd21c5000c59c084f4143944804240b86c74ce4f0c59c013b534b742804240075e2d77660c59c0069fe6e445804240d6187442e80c59c0b378b13044804240da82606d471159c0f58e3cd83a80424029ef6beb501959c091c3e9a92980424010037d9dcb1b59c0ef1c1e5d2480424050ac9d4acc1b59c02f04ac5b24804240a2b023dcf31b59c09206160724804240b99c7f249b1d59c07fed3a7e20804240f76d57c9af2159c0636e15c5178042407fa2b2614d2359c09cdcef5014804240888384285f2359c0357ba01518804240624d6551d82559c006da1d520c804240795be9b5d92559c0bef90d130d8042401f80d4264e2859c05917b7d1008042401e2bf86d882859c0e90b21e7fd7f4240d5af743e3c2b59c0111ac1c6f57f4240c9569753022f59c022e3512ae17f4240792288f3703059c0ab0320eeea7f4240fdc6b63b9f3059c022c793fde87f42401f679ab0fd3059c02cf52c08e57f424012329067973359c02d5dc136e27f4240a438471d1d3459c04b766c04e27f4240deca654c673659c08b397a01d57f42401ed61bb5c23659c0b8770dfad27f4240afc91af5103959c0d0d38041d27f4240e1270ea0df3959c092054ce0d67f4240a91611c5e43959c0d107cbd8d07f4240688d4127843c59c0ef37da71c37f424001874d26543d59c0045a0d90c27f4240821953b0c63f59c009fce1e7bf7f4240ae65321ccf4059c078d32d3bc47f4240399b8e006e4359c05dbef561bd7f424042d13c80454459c0ed7e15e0bb7f4240591bb40c294659c0ed95db8cb67f4240f46393fc884d59c042075dc2a17f42408a01124da04d59c0265646239f7f42408610a604205259c003ab3ed9927f4240d7666325e65659c0037ae1ce857f42402dce18e6045759c0459db987847f42401500e319345859c0edb94c4d827f4240193735d07c5a59c0f646ad307d7f42404bab21718f5a59c0c7f65ad07b7f42408179c8940f5f59c0d844662e707f4240cb9d9960386159c0f0d4230d6e7f4240ae9d2809896359c081fdd7b9697f42408d2958e36c6659c015c26a2c617f42402920ed7f806659c0e1b4e0455f7f4240287d5e8d046b59c024503b91547f4240e97e5e8d046b59c021503b91547f424063a6a990f76d59c004e253934d7f42402aac11cec07059c0786174f8467f424076094923e77459c05a33fd213d7f424076f05400347759c0006ef9ad377f4240b6efd11f637859c095d55cdf347f4240e426700a8e7959c0092bb91a327f42408ba6b393c17959c022fc8ba0317f42400ecc2906ee7959c0b6925c37317f42404821b090da7b59c0d536c0a92c7f42406798da52078059c070e481c8227f42406798da52078059c029047289237f42402aa1bb24ce8159c085eb51b81e7f424051a5660fb48259c0569bff571d7f42401d007157af8259c0376bf0be2a8342404d840d4faf8259c0d2c6116bf183424000016bd5ae8259c04ad3a0681e8442400169ff03ac8259c04e0af31e67844240174339d1ae8259c0a2d288997d8442403bff76d9af8259c0952d9276a38d42406beba7ffac8259c07b849a21558e424016dba4a2b18259c0172829b00090424016c1ff56b28259c0172829b0009042407e3b861eb28259c002710f2a3890424076172829b08259c0be33daaa2492424017299485af8259c0958098840ba14240ea5a7b9faa8259c0c2d32b6519a64240adda3521ad8259c032384a5e9da742401152b7b3af8259c07d923b6c22ad42405ea10f96b18259c02634492c29ad4240f17f4754a88259c0a6b4fe9600b0424078725257a98259c0784bfdfdd0b14240cb41d0d1aa8259c00f59a48977b44240731074b4aa8259c0ab21718fa5b7424072dc291dac8259c043c02154a9b742402afc19deac8259c0a6eeca2e18bc424090db2f9fac8259c00bcf4bc5c6c04240287ae063b08259c081e9b46e83c442400caf2479ae8259c0cb86359545c5424083f92b64ae8259c0c97553ca6bc74240323b8bdea98259c079245e9ececd424044c02154a98259c063b323d577d242408b868c47a98259c0a032fe7dc6d34240209c4f1dab8259c0c748f60835d542404a97fe25a98259c0b282df8618d74240309fac18ae8259c02db29defa7dc4240c18aaef6af8259c03f84d47f88de4240f2d077b7b28259c05ccccf0d4de142407d259012bb8259c0ac3aab05f6e44240f790f0bdbf8259c07e18213cdae6424085e97b0dc18259c08a90ba9d7de9424036e49f19c48259c0fe1f274c18ef42405c9b0838cc8259c0ac3c8d14fef44240f645425bce8259c02a5778978bf642400e881057ce8259c014addc0bccf642409cfd8172db8259c0f37519fed3054340cf6bec12d58259c04b8bfa24770e43405c4d7448d88259c04f39f8c65d0f4340ba30d28bda8259c094490d6d001043409ae411b5d78259c06f8fa00b1a1143402e742502d58259c069a510c825124340077293c2d58259c0e9ae54b6781643408080b56ad78259c03541d47d0020434050897f43d98259c06587ec0d99214340ae9cbd33da8259c08fc536a9682243407efe7bf0da8259c0c1e09a3bfa274340b189cc5ce08259c0037b4ca43431434067244223d88259c042cefbff38354340709a3e3be08259c084640113b8354340536ea296e68259c0d976da1a113a4340012ec896e58259c0ed478ac8b040434019709692e58259c06d8ac745b54043400f2a711de38259c08315a75a0b434340ba8102efe48259c0da54dd239b454340e3486760e48259c0449db98784474340d89aadbce48259c09507e929724a4340aeb9a3ffe58259c0c7f2ae7ac04e434098f90e7ee28259c03eec8502b6554340fdbe7ff3e28259c073486aa16456434097c5c4e6e38259c0454948a46d564340a94a5b5ce38259c03d2cd49ae6574340f7cdfdd5e38259c0a73ffb9122584340c058dfc0e48259c069e21de04959434096438b6ce78259c0758c2b2e8e604340c6fb71fbe58259c02c9b3924b5604340f54bc45be78259c0d9e9077591624340ca6aba9ee88259c0ff791a304864434066d993c0e68259c058aeb7cd546643405fe811a3e78259c0fc69a33a1d684340497cee04fb8259c0aad5575705864340e521533e048359c016a1d80a9a90434036516323058359c0d45441f40a9143401b2fdd24068359c0ef7211df899143409fa1bafd0f8359c0bbb24274329c434088a1d5c9198359c06016da39cda64340f9b31f29228359c0b50f79cbd5af43405c656778248359c0e65304b470b24340b642588d258359c0c1e10511a9b34340d3d9c9e0288359c01a6ec0e787b54340eb1b98dc288359c0a62897c62fb643401213d4f02d8359c04565c39acac04340a19fa9d72d8359c05d876a4ab2c44340b3588ae42b8359c04a6249b9fbc443404bcb54542f8359c00cf369cbb9c8434040498105308359c0eb0088bb7ac943407b134372328359c018b49080d1cb4340116a046e378359c0ce99b77e49d04340ed3f321d3a8359c0b6d26bb3b1d24340fda36fd2348359c0bedd921cb0d34340ecd79dee3c8359c0d8af3bdd79d64340a1b597ec418359c0b5ac2a20f3de43408272dbbe478359c0c3d7d7bad4e843408dec4acb488359c0d33252efa9ea43405d4e0988498359c0ed0f94dbf6eb4340321f10e84c8359c0187d0569c6ec4340e9f010c64f8359c026ab22dc64004440'::geometry, 'T*F**F***')
LIMIT 21; args=(, 'T*F**F***'); alias=default
I see. I'm out of ideas... How are you testing? I'm adding a new job in the postgis workflow (last line fine-tuned to run a single test, needs adjusting): postgis-alpine:
if: contains(github.event.pull_request.labels.*.name, 'geodjango')
runs-on: ubuntu-latest
name: Latest PostGIS (alpine-based)
services:
postgres:
image: postgis/postgis:17-3.5-alpine
env:
POSTGRES_DB: geodjango
POSTGRES_USER: user
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
cache: 'pip'
cache-dependency-path: 'tests/requirements/py3.txt'
- name: Install libmemcached-dev for pylibmc
run: sudo apt install libmemcached-dev
- name: Install geospatial dependencies
run: sudo apt install -y binutils libproj-dev gdal-bin
- name: Print PostGIS versions
env:
POSTGRES_DB: geodjango
POSTGRES_USER: user
POSTGRES_PASSWORD: postgres
run: |
PGPASSWORD=$POSTGRES_PASSWORD psql -U $POSTGRES_USER -d $POSTGRES_DB -h localhost -c "SELECT PostGIS_full_version();"
- name: Install and upgrade packaging tools
run: python -m pip install --upgrade pip setuptools wheel
- run: python -m pip install -r tests/requirements/py3.txt -r tests/requirements/postgres.txt -e .
- name: Create PostgreSQL settings file
run: mv ./.github/workflows/data/test_postgis.py.tpl ./tests/test_postgis.py
- name: Run PostGIS tests
run: python -Wall tests/runtests.py -v2 --settings=test_postgis gis_tests.geoapp.tests.GeoLookupTest.test_relate_lookup_debug --debug-sql |
Right, it's late here now so will continue tomorrow. I've finally managed to distil it down to just sql with postgres. The first query returns.
The second query returns (with a filter on Lawrence City)
This looks like a bug to me in Postgres/PostGIS?
|
It also works if Lawrence is the first City in the table without first applying the filter. This is why I was unable to recreate the issue in postgres directly, until now. I've begun the process of creating an account on PostGIS's trac (you have to email them for a passphrase) so I can open a ticket there. |
I'm got them installed locally on my machine. It's fairly straight forward on Windows with the osgeo4w installer. |
Ticket : ticket-36009
This patch aims to resolve the test failure seen with PostGIS 3.5 and GEOS 3.13+. Details on the ticket.
smithdc1#7 helps show what is going on here.
In the PR linked above I added a
relate()
function so that I can annotate the outcome of theST_Relate()
. This shows that witih GEOS 3.13+ the outcome ofST_Relate()
(when a pattern is provided) is different depending upon how many rows are in the queryset. This is quite surprising to me!