You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by gi...@apache.org on 2026/04/01 09:46:33 UTC
(iceberg-rust) branch gh-pages updated: deploy: 626de2e965c289110a09cd394e229d94596d53bf
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new 40dee3c71 deploy: 626de2e965c289110a09cd394e229d94596d53bf
40dee3c71 is described below
commit 40dee3c716f6a1b33365103ad2a2b1b0badb729b
Author: blackmwk <bl...@users.noreply.github.com>
AuthorDate: Wed Apr 1 09:46:28 2026 +0000
deploy: 626de2e965c289110a09cd394e229d94596d53bf
---
api/iceberg/all.html | 2 +-
api/iceberg/index.html | 4 +-
api/iceberg/scan/index.html | 2 +-
api/iceberg/sidebar-items.js | 2 +-
api/iceberg/util/index.html | 2 +
api/iceberg/util/sidebar-items.js | 1 +
.../util/snapshot/fn.ancestors_between.html | 6 +
api/iceberg/util/snapshot/fn.ancestors_of.html | 5 +
api/iceberg/util/snapshot/index.html | 2 +
api/iceberg/util/snapshot/sidebar-items.js | 1 +
api/search.index/0014f27a3dc9.js | 1 +
api/search.index/0016f83da4c9.js | 1 +
api/search.index/001e813ca213.js | 1 -
api/search.index/009f224413b3.js | 1 -
api/search.index/00fa4025b02c.js | 1 +
api/search.index/01259a209837.js | 1 +
api/search.index/0125fe6532d2.js | 1 +
api/search.index/0157b00c96ac.js | 1 +
api/search.index/016343026327.js | 1 +
api/search.index/017a948e326f.js | 1 +
api/search.index/01abf7a77e5f.js | 1 +
api/search.index/01e46b30c8e3.js | 1 +
api/search.index/021018c7b403.js | 1 -
api/search.index/0239e3842f76.js | 1 +
api/search.index/02b7468aadeb.js | 1 +
api/search.index/02d24023f94d.js | 1 +
api/search.index/02de2e9ac01c.js | 1 -
api/search.index/032fd03f1c12.js | 1 +
api/search.index/038261003a74.js | 1 -
api/search.index/03cab613b7b5.js | 1 -
api/search.index/03f9a38d60b1.js | 1 +
api/search.index/044bd588adaf.js | 1 +
api/search.index/049daa61e361.js | 1 -
api/search.index/04cfee2cd0bb.js | 1 -
api/search.index/0541af0f8e63.js | 1 -
api/search.index/05666172c9d1.js | 1 +
api/search.index/05987b717b47.js | 1 -
api/search.index/059999704719.js | 1 -
api/search.index/05a132dab432.js | 1 +
api/search.index/05bc5cd7a6b6.js | 1 +
api/search.index/05ec7ec836b9.js | 1 +
api/search.index/05fda69f86b1.js | 1 +
api/search.index/060a9ccaa9ae.js | 1 -
api/search.index/061e419bd957.js | 1 +
api/search.index/06a7121ef26c.js | 1 +
api/search.index/06e4ac568e3c.js | 1 +
api/search.index/070842e01b58.js | 1 +
api/search.index/08032e6abfec.js | 1 -
api/search.index/08690822a000.js | 1 +
api/search.index/08786df366ec.js | 1 +
api/search.index/08b6ff85e2ba.js | 1 -
api/search.index/08bb06feefc7.js | 1 -
api/search.index/08c6a40cdb4f.js | 1 +
api/search.index/0963cd1714ad.js | 1 +
api/search.index/097098f89ab8.js | 1 -
api/search.index/0984e1d40685.js | 1 +
api/search.index/099dc2d839ed.js | 1 -
api/search.index/09a405084719.js | 1 +
api/search.index/0a0d7bb95b03.js | 1 +
api/search.index/0adef101d369.js | 1 -
api/search.index/0affb4565ff9.js | 1 -
api/search.index/0b1d38d44045.js | 1 +
api/search.index/0b3ffd4a2084.js | 1 -
api/search.index/0b5e848f43e7.js | 1 -
api/search.index/0baf54df87fa.js | 1 -
api/search.index/0be871273b10.js | 1 -
api/search.index/0be8872096e5.js | 1 -
api/search.index/0c3cbe42c9a1.js | 1 -
api/search.index/0d027f5307c2.js | 1 +
api/search.index/0d0b13e9cf3a.js | 1 +
api/search.index/0d2e5d4f02fe.js | 1 -
api/search.index/0d5f32465ea5.js | 1 -
api/search.index/0d8e28a64132.js | 1 +
api/search.index/0db7dba8c16d.js | 1 -
api/search.index/0e052cdb942f.js | 1 +
api/search.index/0e192e867bfb.js | 1 -
api/search.index/0e371e1ed4c7.js | 1 +
api/search.index/0e3a23c76a09.js | 1 -
api/search.index/0ec40bd3fedc.js | 1 +
api/search.index/0ed63bb597e5.js | 1 +
api/search.index/0ee5bfc71bef.js | 1 +
api/search.index/0f38da6737ea.js | 1 +
api/search.index/0f4b9247221c.js | 1 +
api/search.index/0fb14ae217d6.js | 1 +
api/search.index/0fb794c2b806.js | 1 +
api/search.index/0fc9e956b3ae.js | 1 -
api/search.index/1093a69137b0.js | 1 -
api/search.index/1096c64e0813.js | 1 -
api/search.index/10976b0e0282.js | 1 +
api/search.index/10faa5ea5078.js | 1 -
api/search.index/11232d179d65.js | 1 +
api/search.index/118d273254f2.js | 1 -
api/search.index/11a2d57e0525.js | 1 +
api/search.index/127079777b0f.js | 1 +
api/search.index/1270ab172e0e.js | 1 +
api/search.index/127529f6baf9.js | 1 +
api/search.index/12bcf283825c.js | 1 -
api/search.index/12e8603ab869.js | 1 +
api/search.index/12ef06118497.js | 1 +
api/search.index/12f96fa962e9.js | 1 -
api/search.index/134ed6e3b09e.js | 1 -
api/search.index/137be03cd861.js | 1 +
api/search.index/13a9353da35a.js | 1 +
api/search.index/13bfcb382e30.js | 1 +
api/search.index/1421c464b5e7.js | 1 -
api/search.index/14839a7ca52d.js | 1 +
api/search.index/14a15911266b.js | 1 +
api/search.index/14d56267330b.js | 1 +
api/search.index/1516a5f94579.js | 1 +
api/search.index/1516cfc0f17c.js | 1 -
api/search.index/151a1ddbfc90.js | 1 -
api/search.index/158093e7df2e.js | 1 -
api/search.index/160704ec753e.js | 1 +
api/search.index/1623941662d2.js | 1 +
api/search.index/168d9f5bc1bf.js | 1 +
api/search.index/16945023aa5b.js | 1 +
api/search.index/16a662455a01.js | 1 -
api/search.index/16cfdd9dffce.js | 1 +
api/search.index/1721facdbdcf.js | 1 -
api/search.index/176c53603932.js | 1 -
api/search.index/180836370777.js | 1 -
api/search.index/183f8e098e9a.js | 1 -
api/search.index/18bfea916ba9.js | 1 -
api/search.index/18e76ae7b130.js | 1 +
api/search.index/190605a2f8c1.js | 1 -
api/search.index/190e8fb443fd.js | 1 -
api/search.index/191eb8a7ee41.js | 1 +
api/search.index/19680e2795fa.js | 1 +
api/search.index/196a237a97e1.js | 1 +
api/search.index/198e03b41f64.js | 1 +
api/search.index/19b73b96d11a.js | 1 +
api/search.index/19e12b496aa7.js | 1 -
api/search.index/1bb356c2e99f.js | 1 -
api/search.index/1bb90fb092c2.js | 1 +
api/search.index/1bbfe05283b0.js | 1 -
api/search.index/1bcb9d2b46e9.js | 1 +
api/search.index/1bf6a0673b03.js | 1 +
api/search.index/1bfb78b84cbd.js | 1 -
api/search.index/1c0d85af4e3d.js | 1 -
api/search.index/1d69410f5fdb.js | 1 -
api/search.index/1d6ccaa0ecb2.js | 1 -
api/search.index/1d7223faf81b.js | 1 -
api/search.index/1dcda82f9dfb.js | 1 +
api/search.index/1e3c7cebcefc.js | 1 +
api/search.index/1e497b93051e.js | 1 +
api/search.index/1f1933cc8e92.js | 1 +
api/search.index/1fba933da292.js | 1 +
api/search.index/1fcb517d475d.js | 1 -
api/search.index/1fd320728ae1.js | 1 -
api/search.index/203ee4c569df.js | 1 -
api/search.index/205868642f8a.js | 1 +
api/search.index/205b8345cae4.js | 1 +
api/search.index/205df89e768d.js | 1 -
api/search.index/2073c7591926.js | 1 +
api/search.index/20f92e24029e.js | 1 +
api/search.index/2106c70a413b.js | 1 +
api/search.index/21591a0093ad.js | 1 +
api/search.index/216f56cb56be.js | 1 +
api/search.index/21a049f86aa3.js | 1 +
api/search.index/21b5567f28da.js | 1 -
api/search.index/21fa2ceee308.js | 1 -
api/search.index/22aaf97d6a87.js | 1 +
api/search.index/2385ec3c9472.js | 1 +
api/search.index/239efa2f0c4a.js | 1 +
api/search.index/23a8adf5621b.js | 1 +
api/search.index/24020f0001a8.js | 1 -
api/search.index/244e5cb46dc7.js | 1 +
api/search.index/24540edfab57.js | 1 +
api/search.index/245a49d771ea.js | 1 +
api/search.index/246be2a74ff7.js | 1 -
api/search.index/2472228cd167.js | 1 -
api/search.index/249e3c8fc72a.js | 1 +
api/search.index/24bd775a5f42.js | 1 +
api/search.index/24da8225dd55.js | 1 +
api/search.index/24e1690f7a56.js | 1 -
api/search.index/2591124707a1.js | 1 -
api/search.index/2592cd6dc7d6.js | 1 -
api/search.index/25d838336cea.js | 1 -
api/search.index/263caa95741c.js | 1 -
api/search.index/2646734469f5.js | 1 +
api/search.index/271ae48c7e2d.js | 1 -
api/search.index/27eff7aaf869.js | 1 -
api/search.index/282b7c6cd905.js | 1 -
api/search.index/283f45587bd0.js | 1 -
api/search.index/287e7f499c73.js | 1 +
api/search.index/2971bb1e5b6b.js | 1 -
api/search.index/2984894cf809.js | 1 +
api/search.index/29a78ee70e2d.js | 1 +
api/search.index/29ad336ed8be.js | 1 -
api/search.index/29b2e248fb4b.js | 1 +
api/search.index/29b4f278574e.js | 1 -
api/search.index/29f535535c19.js | 1 +
api/search.index/29f9bc5f214f.js | 1 +
api/search.index/2a3f65209aea.js | 1 -
api/search.index/2af99fd3ae55.js | 1 +
api/search.index/2b03582a1254.js | 1 +
api/search.index/2b0cf87ecf5f.js | 1 -
api/search.index/2b23af8eb3c1.js | 1 +
api/search.index/2b4634a21466.js | 1 -
api/search.index/2b49c3d239e0.js | 1 +
api/search.index/2be6958353b1.js | 1 -
api/search.index/2beab6177c34.js | 1 -
api/search.index/2c7be0cabb42.js | 1 +
api/search.index/2c9c5aa8abd1.js | 1 +
api/search.index/2cb9208e0fba.js | 1 -
api/search.index/2cfe4f3215bb.js | 1 -
api/search.index/2d244c815917.js | 1 -
api/search.index/2d72559e761d.js | 1 -
api/search.index/2db0bb93d0ce.js | 1 -
api/search.index/2ddbac3d3735.js | 1 -
api/search.index/2e4de5247e8e.js | 1 -
api/search.index/2e93c38986a6.js | 1 -
api/search.index/2ecfe241a9a4.js | 1 -
api/search.index/2f1d556749d3.js | 1 +
api/search.index/2fe854efe1aa.js | 1 -
api/search.index/300563a01323.js | 1 +
api/search.index/3021f59a3b4e.js | 1 -
api/search.index/308d9af3018e.js | 1 -
api/search.index/30927de4daab.js | 1 +
api/search.index/30d1705ddff3.js | 1 +
api/search.index/310de1c39b04.js | 1 +
api/search.index/3143dbad4788.js | 1 -
api/search.index/315a018e0048.js | 1 -
api/search.index/31a79a725787.js | 1 +
api/search.index/31f0f1e19cd1.js | 1 -
api/search.index/31f51c3ddad0.js | 1 +
api/search.index/31fc627b6c2e.js | 1 -
api/search.index/31fd4facacba.js | 1 +
api/search.index/320c427d4e00.js | 1 +
api/search.index/321615efe1c8.js | 1 +
api/search.index/321d16db4c74.js | 1 +
api/search.index/322f88e34430.js | 1 +
api/search.index/326b679118d4.js | 1 +
api/search.index/32cb9c69cae0.js | 1 -
api/search.index/33167cfe0155.js | 1 +
api/search.index/3322cd0f9ce2.js | 1 +
api/search.index/3325fe753b34.js | 1 -
api/search.index/3332d8ddac43.js | 1 -
api/search.index/3377dfae3c8c.js | 1 -
api/search.index/337dfd05e09b.js | 1 +
api/search.index/33b8b1b2ff1d.js | 1 -
api/search.index/33bd36508e1f.js | 1 -
api/search.index/33ce06abc2c6.js | 1 -
api/search.index/33df23bc06c2.js | 1 -
api/search.index/349311d34f41.js | 1 -
api/search.index/34aa661babb8.js | 1 -
api/search.index/34ac4f4707c0.js | 1 -
api/search.index/34ba97ae2a8f.js | 1 -
api/search.index/34dd69303dad.js | 1 +
api/search.index/35706baa243e.js | 1 -
api/search.index/35c866da1d30.js | 1 -
api/search.index/360ed2a9ab53.js | 1 -
api/search.index/363872c01e77.js | 1 +
api/search.index/36525677a8fc.js | 1 -
api/search.index/366a4a8d5d77.js | 1 +
api/search.index/36e6bded81df.js | 1 -
api/search.index/37280366aac0.js | 1 +
api/search.index/3778f5a4cb4e.js | 1 -
api/search.index/378414a428c6.js | 1 -
api/search.index/37d1fb94674a.js | 1 +
api/search.index/3849b96a988c.js | 1 +
api/search.index/39725572d19f.js | 1 -
api/search.index/39bc0ffb0d0f.js | 1 +
api/search.index/39c25a6db512.js | 1 +
api/search.index/39ceab227428.js | 1 +
api/search.index/39e957e97afb.js | 1 +
api/search.index/3b15b927b967.js | 1 +
api/search.index/3b1de42af442.js | 1 +
api/search.index/3b3e2fc7d53e.js | 1 -
api/search.index/3b9c8400ecb5.js | 1 +
api/search.index/3bb86602168d.js | 1 -
api/search.index/3bc00febf758.js | 1 +
api/search.index/3ccf0bd5e111.js | 1 -
api/search.index/3ccf4f15484f.js | 1 -
api/search.index/3d47177d385f.js | 1 -
api/search.index/3d486811cbdc.js | 1 -
api/search.index/3dbe185dcd01.js | 1 +
api/search.index/3e2b8b9e9b06.js | 1 +
api/search.index/3ec997169881.js | 1 -
api/search.index/3ef4ca6c1695.js | 1 +
api/search.index/3f2005758fd0.js | 1 +
api/search.index/3f47f547b099.js | 1 -
api/search.index/3f63ff68d52e.js | 1 +
api/search.index/3f727f7621a5.js | 1 +
api/search.index/3f87a8eb318b.js | 1 -
api/search.index/3fa242d95c0a.js | 1 -
api/search.index/401dc490d6d0.js | 1 +
api/search.index/4033723baa7c.js | 1 -
api/search.index/404eed1c24f2.js | 1 -
api/search.index/4096f1237958.js | 1 +
api/search.index/40e566dec977.js | 1 +
api/search.index/40f5f8e1784c.js | 1 -
api/search.index/4152e3741372.js | 1 -
api/search.index/41703f704037.js | 1 +
api/search.index/41b9c6e51390.js | 1 +
api/search.index/41fa2782e890.js | 1 +
api/search.index/423d6a733d07.js | 1 -
api/search.index/42f101f1f307.js | 1 +
api/search.index/4314dada667c.js | 1 +
api/search.index/43948c0ba024.js | 1 +
api/search.index/4427d35f93ff.js | 1 -
api/search.index/444480dca065.js | 1 +
api/search.index/44739a3d1f11.js | 1 +
api/search.index/44bbf3906cda.js | 1 -
api/search.index/44d3f9c6f6a4.js | 1 +
api/search.index/456792f13705.js | 1 +
api/search.index/45bb8f495d11.js | 1 -
api/search.index/45ed9800dfa0.js | 1 +
api/search.index/462707ecf27f.js | 1 -
api/search.index/462b3e59487f.js | 1 +
api/search.index/462bc38f2b92.js | 1 -
api/search.index/4637e723a4a3.js | 1 -
api/search.index/463b8906f099.js | 1 -
api/search.index/464185940b13.js | 1 +
api/search.index/465ee27903f6.js | 1 -
api/search.index/46e5d58c7881.js | 1 -
api/search.index/471601f0ebf8.js | 1 -
api/search.index/4780b39a16e9.js | 1 -
api/search.index/47d3558a5530.js | 1 +
api/search.index/47fca8062c2c.js | 1 -
api/search.index/484dcb04ebd5.js | 1 +
api/search.index/486b9596bdc8.js | 1 +
api/search.index/48a18daae99a.js | 1 -
api/search.index/48c16e193cf0.js | 1 -
api/search.index/49307c1ab539.js | 1 +
api/search.index/49a2938b242d.js | 1 -
api/search.index/4a38fa58cfcd.js | 1 -
api/search.index/4af7eba12020.js | 1 +
api/search.index/4b21e1346ebc.js | 1 -
api/search.index/4b7123a411e9.js | 1 +
api/search.index/4ba1c6eb15b9.js | 1 -
api/search.index/4bb4f809c6df.js | 1 -
api/search.index/4c4bd6a7ad1c.js | 1 -
api/search.index/4ce16870d6f3.js | 1 -
api/search.index/4d53a67f92d1.js | 1 +
api/search.index/4e1768cb7da7.js | 1 -
api/search.index/4e5dbb7f5b33.js | 1 -
api/search.index/4e9a8a22b663.js | 1 +
api/search.index/4ef2f689927a.js | 1 +
api/search.index/4efd675cba52.js | 1 -
api/search.index/4f670ad2aaee.js | 1 -
api/search.index/4fa71004b595.js | 1 -
api/search.index/508fc30e78f7.js | 1 -
api/search.index/5098ad7843ba.js | 1 -
api/search.index/50c062d86cb6.js | 1 +
api/search.index/50f54c5f52b4.js | 1 +
api/search.index/5101c540a4d6.js | 1 +
api/search.index/51599a541302.js | 1 +
api/search.index/5174d1df84f7.js | 1 -
api/search.index/51afc4d5b000.js | 1 -
api/search.index/51bb8dadb579.js | 1 +
api/search.index/51f45c5cbe91.js | 1 +
api/search.index/52350204cd35.js | 1 -
api/search.index/525337b0a737.js | 1 -
api/search.index/52e5efadbb8d.js | 1 -
api/search.index/530c1082d131.js | 1 -
api/search.index/5315997ab1b6.js | 1 -
api/search.index/533847b03806.js | 1 -
api/search.index/53eb28fa8aa1.js | 1 +
api/search.index/5416cb260373.js | 1 +
api/search.index/542a08962218.js | 1 +
api/search.index/54353f94d3f5.js | 1 -
api/search.index/5488e4537421.js | 1 -
api/search.index/54d2ad51feff.js | 1 -
api/search.index/54e948199776.js | 1 +
api/search.index/54fd963627ee.js | 1 +
api/search.index/551648d9c792.js | 1 -
api/search.index/556703d0d512.js | 1 +
api/search.index/5598b638e7e4.js | 1 +
api/search.index/55abde78f386.js | 1 +
api/search.index/55b9c5664ff5.js | 1 -
api/search.index/55ced655da83.js | 1 +
api/search.index/5677dd392451.js | 1 +
api/search.index/56a3edff093e.js | 1 -
api/search.index/56b12b83e4cc.js | 1 -
api/search.index/56b7b1bc47dd.js | 1 +
api/search.index/56caaabea43d.js | 1 +
api/search.index/56e45ba31605.js | 1 -
api/search.index/56eba6638bdc.js | 1 -
api/search.index/56ee6b9131c6.js | 1 +
api/search.index/57773545999e.js | 1 +
api/search.index/57aaad342e7e.js | 1 -
api/search.index/581a6ed66a1f.js | 1 +
api/search.index/593a7b58fe6d.js | 1 -
api/search.index/59a75dccd8b3.js | 1 -
api/search.index/5ad9189679c6.js | 1 +
api/search.index/5ae524aa29ca.js | 1 +
api/search.index/5b07109ce5bf.js | 1 +
api/search.index/5b69011b4156.js | 1 -
api/search.index/5bc731ff79da.js | 1 -
api/search.index/5bcbf5af4773.js | 1 +
api/search.index/5bf2917e1328.js | 1 +
api/search.index/5bf9da0572b7.js | 1 +
api/search.index/5c1499a45b28.js | 1 -
api/search.index/5c182304eb9e.js | 1 -
api/search.index/5c49eff9e606.js | 1 -
api/search.index/5c8deb9e8cfc.js | 1 -
api/search.index/5c9dd7fb6370.js | 1 -
api/search.index/5d0bdafa646b.js | 1 -
api/search.index/5d4a0518d001.js | 1 -
api/search.index/5d5267666bac.js | 1 +
api/search.index/5d52f7120bc7.js | 1 -
api/search.index/5da5d53bec37.js | 1 +
api/search.index/5dc786b49cf0.js | 1 +
api/search.index/5dcbb7c69ad8.js | 1 -
api/search.index/5e90fcbfa075.js | 1 -
api/search.index/5e91bf0815c0.js | 1 -
api/search.index/5edaecc787dd.js | 1 +
api/search.index/5f2ebf596ab9.js | 1 -
api/search.index/5f47221790f9.js | 1 +
api/search.index/5f6ae2d271a7.js | 1 +
api/search.index/5ffabbdabc06.js | 1 -
api/search.index/601d67e6408d.js | 1 +
api/search.index/60a38c8605a4.js | 1 -
api/search.index/6107b6e4bebb.js | 1 -
api/search.index/610b04822861.js | 1 -
api/search.index/614fd32ac5fa.js | 1 +
api/search.index/6188b5f42659.js | 1 +
api/search.index/61bda4b48d79.js | 1 +
api/search.index/61ce9742cbb6.js | 1 -
api/search.index/61f656df393a.js | 1 -
api/search.index/61f7c24196b0.js | 1 +
api/search.index/6266a88041f3.js | 1 -
api/search.index/6273c17257e5.js | 1 +
api/search.index/62a363a5b216.js | 1 +
api/search.index/6376c32b37e0.js | 1 -
api/search.index/63aed08d3336.js | 1 -
api/search.index/63c39986a728.js | 1 +
api/search.index/63cdb5e04925.js | 1 +
api/search.index/6458ece183de.js | 1 -
api/search.index/64927b507363.js | 1 -
api/search.index/6513c5cc895b.js | 1 +
api/search.index/655c50171de4.js | 1 +
api/search.index/65641f372996.js | 1 -
api/search.index/6581fe9c9918.js | 1 +
api/search.index/66222152fa33.js | 1 -
api/search.index/662552ff1569.js | 1 -
api/search.index/6660663a143d.js | 1 +
api/search.index/66b8032aba36.js | 1 +
api/search.index/66f47bdcbf23.js | 1 +
api/search.index/6759df3f6f93.js | 1 -
api/search.index/677b3fdcef63.js | 1 +
api/search.index/679b2fe61a64.js | 1 +
api/search.index/67b00faf9eeb.js | 1 +
api/search.index/6806cb82db1b.js | 1 +
api/search.index/68274008d303.js | 1 -
api/search.index/68968fdfeae9.js | 1 -
api/search.index/699fc0bddc0e.js | 1 -
api/search.index/69c1f836f0b3.js | 1 +
api/search.index/69c69ebdf8e1.js | 1 +
api/search.index/69e382aada67.js | 1 +
api/search.index/69f8e5314b7a.js | 1 +
api/search.index/6ad1d5080711.js | 1 -
api/search.index/6ae9c2f9a39b.js | 1 +
api/search.index/6b0160cb0ccb.js | 1 -
api/search.index/6b3dbec8c7cc.js | 1 -
api/search.index/6b54c956c1f1.js | 1 +
api/search.index/6b7222b89b25.js | 1 +
api/search.index/6b7b4b4ce056.js | 1 +
api/search.index/6b97218d17eb.js | 1 -
api/search.index/6bf8492b3d3d.js | 1 -
api/search.index/6c065cb2183d.js | 1 +
api/search.index/6c8d8b9d5c45.js | 1 -
api/search.index/6ca950e9b018.js | 1 -
api/search.index/6cc204f46690.js | 1 +
api/search.index/6d042900a491.js | 1 -
api/search.index/6d1af2cc7c06.js | 1 -
api/search.index/6d2f52d47167.js | 1 +
api/search.index/6df452a196e6.js | 1 -
api/search.index/6e2518eb6d3b.js | 1 -
api/search.index/6e388734a019.js | 1 -
api/search.index/6e628b5a3409.js | 1 -
api/search.index/6eafb4feb773.js | 1 -
api/search.index/6f733fdc487e.js | 1 -
api/search.index/704a51b9e541.js | 1 -
api/search.index/704f1468541f.js | 1 -
api/search.index/7082e97eb2fb.js | 1 +
api/search.index/70839a2721ec.js | 1 -
api/search.index/71554ce96987.js | 1 -
api/search.index/71689436b3d3.js | 1 +
api/search.index/7179640e104f.js | 1 -
api/search.index/71d8391d304f.js | 1 +
api/search.index/7298eec6b5a8.js | 1 -
api/search.index/72b2eb87049f.js | 1 +
api/search.index/72ec1664a2c1.js | 1 +
api/search.index/73ea6898a0eb.js | 1 +
api/search.index/7442a275e381.js | 1 -
api/search.index/74cf20c2a787.js | 1 -
api/search.index/7544272abd01.js | 1 +
api/search.index/754de0971f6a.js | 1 -
api/search.index/756c04caa596.js | 1 -
api/search.index/75ceabb65838.js | 1 -
api/search.index/7616fcd910ac.js | 1 +
api/search.index/761fd217c0bb.js | 1 -
api/search.index/7642cbcbfaa5.js | 1 -
api/search.index/7662c2b997b8.js | 1 +
api/search.index/7663ad584f3a.js | 1 +
api/search.index/76cdee197e52.js | 1 +
api/search.index/76e7dd12771b.js | 1 +
api/search.index/77084c5a2612.js | 1 -
api/search.index/7732c54d6143.js | 1 +
api/search.index/777118312249.js | 1 -
api/search.index/77721d960d9b.js | 1 +
api/search.index/78140875e81a.js | 1 -
api/search.index/78418167be52.js | 1 -
api/search.index/785ad78e0050.js | 1 -
api/search.index/785fa379d50c.js | 1 -
api/search.index/7869a0df9ee8.js | 1 +
api/search.index/788a35b3a7cf.js | 1 +
api/search.index/7922f79c7efc.js | 1 -
api/search.index/7947378f735b.js | 1 -
api/search.index/795da0168df0.js | 1 +
api/search.index/7983547eee74.js | 1 +
api/search.index/79b525175077.js | 1 -
api/search.index/79bd521a4785.js | 1 -
api/search.index/79c4a8fc2263.js | 1 +
api/search.index/79d26d46af90.js | 1 +
api/search.index/7a471de194d2.js | 1 -
api/search.index/7a6f96a98399.js | 1 -
api/search.index/7a955a65c6cf.js | 1 +
api/search.index/7aa0d3c0fd6a.js | 1 -
api/search.index/7ac466e511ac.js | 1 -
api/search.index/7af6d42dd3c9.js | 1 +
api/search.index/7af89a2412e6.js | 1 +
api/search.index/7b044fc68957.js | 1 +
api/search.index/7b3a0ba82063.js | 1 -
api/search.index/7b97d3df44cf.js | 1 +
api/search.index/7c253028c5cc.js | 1 -
api/search.index/7c269b7d1d4d.js | 1 -
api/search.index/7c38757a447e.js | 1 +
api/search.index/7c560543cd9e.js | 1 +
api/search.index/7d587ccba2db.js | 1 +
api/search.index/7d6e18c2c1db.js | 1 -
api/search.index/7da64647d8b8.js | 1 +
api/search.index/7db5e8cfcaf5.js | 1 -
api/search.index/7ded088f603f.js | 1 +
api/search.index/7f58fda092ce.js | 1 +
api/search.index/7fbf1d279d65.js | 1 -
api/search.index/7fcd52f98916.js | 1 -
api/search.index/7fff01096a57.js | 1 +
api/search.index/desc/21b33ae8ab82.js | 1 -
api/search.index/desc/d3bf0b31ceff.js | 1 +
api/search.index/entry/26bb42d289fd.js | 1 +
api/search.index/entry/59aebcc39170.js | 1 -
api/search.index/function/23a1794a779e.js | 1 +
api/search.index/function/f821c045a6fc.js | 1 -
.../generic_inverted_index/20992865d47c.js | 1 +
.../generic_inverted_index/b19d1e8e1b34.js | 1 -
api/search.index/name/0291a4fab18f.js | 1 -
api/search.index/name/f111d7696b6e.js | 1 +
api/search.index/normalizedName/71d2487b7e36.js | 1 +
api/search.index/normalizedName/fd7ad551e658.js | 1 -
api/search.index/path/237d52cb6093.js | 1 +
api/search.index/path/323a1de78083.js | 1 -
api/search.index/root.js | 2 +-
api/search.index/type/62890570de18.js | 1 +
api/search.index/type/e8f8c712b588.js | 1 -
api/src-files.js | 4 +-
api/src/iceberg/arrow/reader.rs.html | 2 +-
api/src/iceberg/lib.rs.html | 13 +-
api/src/iceberg/scan/mod.rs.html | 2895 ++++++++++----------
api/src/iceberg/util/mod.rs.html | 46 +
api/src/iceberg/util/snapshot.rs.html | 186 ++
api/src/iceberg/utils.rs.html | 43 -
564 files changed, 2003 insertions(+), 1761 deletions(-)
diff --git a/api/iceberg/all.html b/api/iceberg/all.html
index 2213eaf51..08e0e2f62 100644
--- a/api/iceberg/all.html
+++ b/api/iceberg/all.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Mediu [...]
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Mediu [...]
\ No newline at end of file
diff --git a/api/iceberg/index.html b/api/iceberg/index.html
index 1b6662969..30b147bbb 100644
--- a/api/iceberg/index.html
+++ b/api/iceberg/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Apache Iceberg Official Native Rust Implementation"><title>iceberg - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Med [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Apache Iceberg Official Native Rust Implementation"><title>iceberg - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Med [...]
<h2 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h2><h3 id="scan-a-table"><a class="doc-anchor" href="#scan-a-table">§</a>Scan A Table</h3>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::collections::HashMap;
@@ -37,5 +37,5 @@
<span class="prelude-val">Ok</span>(())
}</code></pre></div></div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="arrow/index.html" title="mod iceberg::arrow">arrow</a></dt><dd>Conversion between Iceberg and Arrow schema</dd><dt><a class="mod" href="cache/index.html" title="mod iceberg::cache">cache</a></dt><dd>Cache management for Iceberg.</dd><dt><a class="mod" href="compression/index.html" title="mod iceberg::compression">co [...]
This module is pub just for internal testing.
-It is subject to change and is not intended to be used by external users.</dd><dt><a class="mod" href="transaction/index.html" title="mod iceberg::transaction">transaction</a></dt><dd>This module contains transaction api.</dd><dt><a class="mod" href="transform/index.html" title="mod iceberg::transform">transform</a></dt><dd>Transform function used to compute partition values.</dd><dt><a class="mod" href="writer/index.html" title="mod iceberg::writer">writer</a></dt><dd>Iceberg writer mod [...]
+It is subject to change and is not intended to be used by external users.</dd><dt><a class="mod" href="transaction/index.html" title="mod iceberg::transaction">transaction</a></dt><dd>This module contains transaction api.</dd><dt><a class="mod" href="transform/index.html" title="mod iceberg::transform">transform</a></dt><dd>Transform function used to compute partition values.</dd><dt><a class="mod" href="util/index.html" title="mod iceberg::util">util</a></dt><dd>Utility functions and mo [...]
or with compression: <code><location>/metadata/<version>-<uuid>.gz.metadata.json</code></dd><dt><a class="struct" href="struct.Namespace.html" title="struct iceberg::Namespace">Namespace</a></dt><dd>Namespace represents a namespace in the catalog.</dd><dt><a class="struct" href="struct.NamespaceIdent.html" title="struct iceberg::NamespaceIdent">Namespace<wbr>Ident</a></dt><dd>NamespaceIdent represents the identifier of a namespace in the catalog.</dd><dt><a class="struc [...]
\ No newline at end of file
diff --git a/api/iceberg/scan/index.html b/api/iceberg/scan/index.html
index 7938db486..1c5a31b39 100644
--- a/api/iceberg/scan/index.html
+++ b/api/iceberg/scan/index.html
@@ -1,2 +1,2 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Table scan api."><title>iceberg::scan - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,Fira [...]
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Table scan api."><title>iceberg::scan - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,Fira [...]
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.FileScanTask.html" title="struct iceberg::scan::FileScanTask">File<wbr>Scan<wbr>Task</a></dt><dd>A task to scan part of file.</dd><dt><a class="struct" href="struct.FileScanTaskDeleteFile.html" title="struct iceberg::scan::FileScanTaskDeleteFile">File<wbr>Scan<wbr>Task<wbr>Delete<wbr>File</a></dt><dd>A task to scan part of fi [...]
\ No newline at end of file
diff --git a/api/iceberg/sidebar-items.js b/api/iceberg/sidebar-items.js
index e1e6d6a5a..251eb89e5 100644
--- a/api/iceberg/sidebar-items.js
+++ b/api/iceberg/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["ErrorKind","TableRequirement","TableUpdate","ViewUpdate"],"fn":["drop_table_data"],"macro":["ensure_data_valid"],"mod":["arrow","cache","compression","encryption","expr","inspect","io","memory","metadata_columns","puffin","scan","spec","table","test_utils","transaction","transform","writer"],"struct":["Error","MemoryCatalog","MetadataLocation","Namespace","NamespaceIdent","TableCommit","TableCreation","TableIdent","ViewCreation"],"trait":["Catalog","Catal [...]
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["ErrorKind","TableRequirement","TableUpdate","ViewUpdate"],"fn":["drop_table_data"],"macro":["ensure_data_valid"],"mod":["arrow","cache","compression","encryption","expr","inspect","io","memory","metadata_columns","puffin","scan","spec","table","test_utils","transaction","transform","util","writer"],"struct":["Error","MemoryCatalog","MetadataLocation","Namespace","NamespaceIdent","TableCommit","TableCreation","TableIdent","ViewCreation"],"trait":["Catalog" [...]
\ No newline at end of file
diff --git a/api/iceberg/util/index.html b/api/iceberg/util/index.html
new file mode 100644
index 000000000..067bbbbc7
--- /dev/null
+++ b/api/iceberg/util/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Utility functions and modules."><title>iceberg::util - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7 [...]
+</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="snapshot/index.html" title="mod iceberg::util::snapshot">snapshot</a></dt><dd>Utilities for working with snapshots.</dd></dl></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg/util/sidebar-items.js b/api/iceberg/util/sidebar-items.js
new file mode 100644
index 000000000..a2727232f
--- /dev/null
+++ b/api/iceberg/util/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"mod":["snapshot"]};
\ No newline at end of file
diff --git a/api/iceberg/util/snapshot/fn.ancestors_between.html b/api/iceberg/util/snapshot/fn.ancestors_between.html
new file mode 100644
index 000000000..0e83685a9
--- /dev/null
+++ b/api/iceberg/util/snapshot/fn.ancestors_between.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Iterate starting from `latest_snapshot_id` (inclusive) to `oldest_snapshot_id` (exclusive)."><title>ancestors_between in iceberg::util::snapshot - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.wof [...]
+ table_metadata: &<a class="type" href="../../spec/type.TableMetadataRef.html" title="type iceberg::spec::TableMetadataRef">TableMetadataRef</a>,
+ latest_snapshot_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>,
+ oldest_snapshot_id: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>>,
+) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="type" href="../../spec/type.SnapshotRef.html" title="type iceberg::spec::SnapshotRef">SnapshotRef</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a></code></pre><details class="toggle top-doc" open><sum [...]
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg/util/snapshot/fn.ancestors_of.html b/api/iceberg/util/snapshot/fn.ancestors_of.html
new file mode 100644
index 000000000..ece2dcae7
--- /dev/null
+++ b/api/iceberg/util/snapshot/fn.ancestors_of.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Iterate starting from `snapshot_id` (inclusive) to the root snapshot."><title>ancestors_of in iceberg::util::snapshot - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de [...]
+ table_metadata: &<a class="type" href="../../spec/type.TableMetadataRef.html" title="type iceberg::spec::TableMetadataRef">TableMetadataRef</a>,
+ snapshot_id: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a>,
+) -> impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a><Item = <a class="type" href="../../spec/type.SnapshotRef.html" title="type iceberg::spec::SnapshotRef">SnapshotRef</a>> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a></code></pre><details class="toggle top-doc" open><sum [...]
+</div></details></section></div></main></body></html>
\ No newline at end of file
diff --git a/api/iceberg/util/snapshot/index.html b/api/iceberg/util/snapshot/index.html
new file mode 100644
index 000000000..d31904d27
--- /dev/null
+++ b/api/iceberg/util/snapshot/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Utilities for working with snapshots."><title>iceberg::util::snapshot - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans- [...]
+</div></details><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.ancestors_between.html" title="fn iceberg::util::snapshot::ancestors_between">ancestors_<wbr>between</a></dt><dd>Iterate starting from <code>latest_snapshot_id</code> (inclusive) to <code>oldest_snapshot_id</code> (exclusive).</dd><dt><a class="fn" href="fn.ancestors_of.html" title="fn iceberg::util::snapshot::ancestors_of">anc [...]
\ No newline at end of file
diff --git a/api/iceberg/util/snapshot/sidebar-items.js b/api/iceberg/util/snapshot/sidebar-items.js
new file mode 100644
index 000000000..043f91ac0
--- /dev/null
+++ b/api/iceberg/util/snapshot/sidebar-items.js
@@ -0,0 +1 @@
+window.SIDEBAR_ITEMS = {"fn":["ancestors_between","ancestors_of"]};
\ No newline at end of file
diff --git a/api/search.index/0014f27a3dc9.js b/api/search.index/0014f27a3dc9.js
new file mode 100644
index 000000000..ac2f79687
--- /dev/null
+++ b/api/search.index/0014f27a3dc9.js
@@ -0,0 +1 @@
+rn_("BQBBAAAGvB1kpR0TjAKgQAAAHYJtbwUBxQAABIMbBd8bcXP7AmFvFQBJAAAEJB1mqx2sHRUASQAABqQdZK8bZB0VAEwAAAa3HWQjHZkdFQBMAAAGth1kIh2YHfsCYWnnAQGFoIAAABzZBDAG9JwMAABvCgEAvgBFAEYAAAO+G2a1GGQbZRv+GwEdFQBEAAAGvx1kcB2wHSMCAqCAAAAdIGNs9y0NAAB6AAEAAQAqCjkDjgJ7hKAQAAAMnRFBAA==")
\ No newline at end of file
diff --git a/api/search.index/0016f83da4c9.js b/api/search.index/0016f83da4c9.js
new file mode 100644
index 000000000..723e95e05
--- /dev/null
+++ b/api/search.index/0016f83da4c9.js
@@ -0,0 +1 @@
+rn_("BQLDAAAIax0CgBwITx1idXcjBgKgYAAAGzVicAHZEwAAIwAEsIAX5AGCoIAAAByYoRAAABzCYmNsdvN4AQAAvwIkGA==")
\ No newline at end of file
diff --git a/api/search.index/001e813ca213.js b/api/search.index/001e813ca213.js
deleted file mode 100644
index 844f614c2..000000000
--- a/api/search.index/001e813ca213.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("UUEAAH0bfhuSG3Uc1ByMHdUARwAABJ0dZjgaORo6GjsaPBo9Gj4aWxyPHJQclxxKHbodux0bAqBgAAAbv2N0+wJucw==")
\ No newline at end of file
diff --git a/api/search.index/009f224413b3.js b/api/search.index/009f224413b3.js
deleted file mode 100644
index 368f61dea..000000000
--- a/api/search.index/009f224413b3.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAIGh1jBxuUHQUBwAAAAhYZFmIYMxpichsCoEAAABzJYW/zAAJ0dfc1EQAAhwEBAAEAvgYBAIgBVQBAAAAFLRtlBBcFFxQZFRkqGysbGwKwYBsuAAFmdBsCoGAAABpvZW8FAcAAABHfCrMWEiUNiBdhdQEAA6BAAAAdHrBAG5AAAaAAAAAYKmZtczswAAABAAAUAAYAqRcOADkbAADIGwAA9BsAAHIdAAClHQEAGwKwAAkCCSlkbgUBwQAAAwYbEnsYJhtydQUAQAAABBIYdQEJGwOgsAAAHTagMAAADo5xcngFAEEAAAa2HWSfHROJAqBAAAAdfG1vSwOgIAAAFrKgMAAAHFpiZ2yXOwCMoDAAABlgoEAAAB0AoCAAABcDoIAAAB2goCAAABuoNylHOjAAAAEAAAAAABEAEAAAAG0BbgFvATAEkw7fDuAO4Q7pFuoWpxeoF+YXixpfHAodax2YHQ==")
\ No newline at end of file
diff --git a/api/search.index/00fa4025b02c.js b/api/search.index/00fa4025b02c.js
new file mode 100644
index 000000000..4ebc795bc
--- /dev/null
+++ b/api/search.index/00fa4025b02c.js
@@ -0,0 +1 @@
+rn_("BQLAAAAF0RwOOx0Y/hsBHWVpbUUAQwAAA7gcaT0R4xbkFuUWKhsFAcMAAAqhHQ2xHWV0IwQCoGAAABzhYnABgxkAABUAQAAABnkaYjwRYRrzgQJudBMAA6BgAAAdcaBwAAAbkGNucjswAAABAAAHAAIAjhcGACYdAAAFAcAAAATfGwJ9GXB1BQHBAAAygxuEG5gbexwWdxp4GmVpY4EDoOAAAB03Y3FzBQHAAAA1ghz6HGIdYx0MbB1hafMEAWb0gRgAAPID2gAoADFGAACEGQ8bEBsTHfOCAnB2BQHEAAARgRz5HAUhHWVyEwcCoCAAABp2YnLzfhgAAAEA7AAFAsAAABmRHAgdC+EbZDIYMxg0GDUYNhg3GDgYY254dQFAAAACIRoWZh3DHWFksBblG14dXx2OHZUdlh21HSFGAAB8GH0YWRwFAcAAABMLFwwXN/wb/RviHAAdbW5rA6AwAAAYq2FvcgUBwQAAFtM [...]
\ No newline at end of file
diff --git a/api/search.index/01259a209837.js b/api/search.index/01259a209837.js
new file mode 100644
index 000000000..7b4b40414
--- /dev/null
+++ b/api/search.index/01259a209837.js
@@ -0,0 +1 @@
+rn_("JQBDAAAOhR1jsBixGO4aIUEAAHwXfRciGm8AhaBAAAAZPKBwAAAb3bAgGvUB8QGhBAUBwAAAL3odix2MHSd6HPIc8xxhciMDA6AQAAAcjLBQHNYAYWVwcwH/FgAA+wJheQ==")
\ No newline at end of file
diff --git a/api/search.index/0125fe6532d2.js b/api/search.index/0125fe6532d2.js
new file mode 100644
index 000000000..c5a5797ac
--- /dev/null
+++ b/api/search.index/0125fe6532d2.js
@@ -0,0 +1 @@
+rn_("FQBIAAAGvx1kcB2wHSsCoHAAABoYZW0bA6BgAAAbiqCgAAAbU21wcjFDAABJGkoaSRvUHAUBwAAAAgcdCZ4daW8TBwKgMAAAHT9mafehHAAAQgABAEUADAABADgA+wJhchUBQgAABzgdBQkdYmaOG5cdIUUAAHodix2MHSUAQAAAA6AcaXwcfRz0HCFCAABnGmgaCh0xQQAAaRtqG2sbOh0FAcAAABV5HG0dAp8cdXn3AAGFgA2UABABAgEHOjAAAAEAAAAAAAwAEAAAAGsYThlPGVAZURlSGRIbohuDHOgcUR1cHYkd+wNlbG8FAEQAAARuGW+NFwUBwAAAAPEXC88cbnAbAqAgAAAYmGF1BQBCAAAGwh1ksx01AEEAABDvF/AXc40cjhyPHJAcIUMAACoZaxyFHfsCdHoFAEYAAAUqHXJ4GzFHAAA3G9cc2Bw5HfMDAmZsOzAAAAEAAAcAAgA/EQAA7BIGAAUBQQA [...]
\ No newline at end of file
diff --git a/api/search.index/0157b00c96ac.js b/api/search.index/0157b00c96ac.js
new file mode 100644
index 000000000..36bcc29c4
--- /dev/null
+++ b/api/search.index/0157b00c96ac.js
@@ -0,0 +1 @@
+rn_("BQHIAAAHPR0DLx1lcGUAQAAABTIbZaINCBcJFxkZGhkvGzAbsUEAAPIKFxGkGKUYphinGKgYqRiLG4wb1hw3Hb8AhaAwAAAYWLBgGzMAAWEABg==")
\ No newline at end of file
diff --git a/api/search.index/016343026327.js b/api/search.index/016343026327.js
new file mode 100644
index 000000000..ba3db0990
--- /dev/null
+++ b/api/search.index/016343026327.js
@@ -0,0 +1 @@
+rn_("BQBGAAAFKh1yeBsxRwAANxvXHNgcOR3zAAJmbDswAAABAAAHAAIAPxEAAOwSBgATgQKwcB0QAI5tcwUBwAAAEBwZBx0bQR1CHWV0BQHAAAARRhLKHAfRG2xz+wJlbK8AhbAwFu8AAaCgAAAa96BgAAAdQAFJAQ==")
\ No newline at end of file
diff --git a/api/search.index/017a948e326f.js b/api/search.index/017a948e326f.js
new file mode 100644
index 000000000..fe6f79014
--- /dev/null
+++ b/api/search.index/017a948e326f.js
@@ -0,0 +1 @@
+rn_("BQBKAAAGHx12RR0FAEUAAAyyHWHlHCOBAqCgAAAc9WFzJQBAAAATKhgrGGluGG8YXxlBQgAAMhEzEd4WsBtbHQUDQAAAUiQZJRkmGScZKBkpGTP8FhUYFhhgHQYWGVR+Gn8agBqBGoIagxprcHJ2lBwFAcIAAAZgHQApGG1zGwKggAAAHG1habUBQQAAFG4cbxwA3RZtc5QOVxJYElkSWhJbElwScBlxGSAbThtPGwUBwAAABXAYEicYKBh1eecvAMugwAAAHbKwYBhxAxGgAAAADn3AQKg7OzAAAAEAACsADgDuCgIA4gwWAA0RAwDhEwEATxgAAC8ZAQByGgEAoBsAANIbAABYHAAA5RwAAPUcAAAEHQAAXR0AAA==")
\ No newline at end of file
diff --git a/api/search.index/01abf7a77e5f.js b/api/search.index/01abf7a77e5f.js
new file mode 100644
index 000000000..2797ee7fb
--- /dev/null
+++ b/api/search.index/01abf7a77e5f.js
@@ -0,0 +1 @@
+rn_("BQBAAAADcRxqZxwlAEMAABEuHUkdZR0bUx1UHRUARwAABAsdZZ0bnhsrAqAQAAAbxWR6YUIAAJsXnBedF54XnxegF6EXlwkAiLBgGiYCgqAQAAARKaAgAAAT1KBAAAAZCRxJA/X8FQAAWwLYAQEABgE=")
\ No newline at end of file
diff --git a/api/search.index/01e46b30c8e3.js b/api/search.index/01e46b30c8e3.js
new file mode 100644
index 000000000..33d2844f6
--- /dev/null
+++ b/api/search.index/01e46b30c8e3.js
@@ -0,0 +1 @@
+rn_("FQBFAAAFSh1j7BztHAUASQAABogdYhcdo4OEoQAAAB2noAAAABl6KAASBQBJAAAGqh1keR0ThAOgwAAAHYmggAAAHWVmcHP7AmZsBQBaAAAGwx1ktR37AmFl")
\ No newline at end of file
diff --git a/api/search.index/021018c7b403.js b/api/search.index/021018c7b403.js
deleted file mode 100644
index 00d70c564..000000000
--- a/api/search.index/021018c7b403.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBFAAAGcRxmXxgFAEIAAAa1HWScHfsCaXQVAUYAAAZwHAgUHWJ3XRheGPMAAmNzOjAAAAEAAAAAABsAEAAAAN0K3grNDM4MzwyPDZANGBkZGTAacRx8HKMcpBylHKYcpxyoHKkcqhywHLQctRz0HCIdXB1dHX4d")
\ No newline at end of file
diff --git a/api/search.index/0239e3842f76.js b/api/search.index/0239e3842f76.js
new file mode 100644
index 000000000..8ad81475c
--- /dev/null
+++ b/api/search.index/0239e3842f76.js
@@ -0,0 +1 @@
+rn_("BQBAAAA0/RyTHZQdrx1sfh0FAEIAAAK0HW2pHSOFAqCAAAAduGFrBQBFAAA0/RyTHZQdrx1sfh37AnJzMUMAADcb1xzYHDkddQFCAAABUhsEkhxpczoZOxlVGlYaoRvnG+gb0BwhhwKggAAAHbgFYWtjAgOgoAAAHa5hY2vzBRYAAAEA8AYVAEIAAAfrHG3RF60YI4ECoDAAABoiYmvzAwJlaQGHDQAAZQBCAAAGvR1kWBpZGkMbRBtWHVcdqB0bAqAwAAAXymRtRQBAAAAHZRxzzgrPCpsMLRL5FgUBxAAABj8bAesXYm/VAEUAAASjHWY9Gj4aPxpAGkEaQhpDGmEclRyaHJ0cUB3AHcEdwwCEsIAcogABoCAAABEiCCgC9TARAAAgAQEAsQYwAq8fiaAgAAAOmKCQAAAZdLFATQ==")
\ No newline at end of file
diff --git a/api/search.index/02b7468aadeb.js b/api/search.index/02b7468aadeb.js
new file mode 100644
index 000000000..6f93b9628
--- /dev/null
+++ b/api/search.index/02b7468aadeb.js
@@ -0,0 +1 @@
+rn_("MUgAAEsdTx1hHWkdMUIAAHIcgBy0HL4cZQFDAAAIsR0DIRpiZP4V/xUAFgEWAhYDFgQWGwOg0AAAHZegMAAAG4FhaGlBQAAAowqkCq8W6xbsFmFIAAAzGTQZNRk2GTcZOBk5GQUAUgAABr4dZK0dBQBUAAAGvx1ksB3zhAJwdAUAUQAABrsdZKIdBQBYAAAGxB1kuh0FAFIAAAbCHWSzHQUATwAABr0dZKgd84cCY3AFAEgAAAZmHWTlGwUASQAABqodZHkdE4QDoMAAAB2JoIAAAB1lZnBzGwKhQAAAHadmbAUAWgAABsMdZLUd+wJhZaczAMoNAn9TB8KgwAAAHQWgwAAAHQagMAAAGGgAG4QdAd0bAAAFAcEAAASSHQWdHXFz8wIBcjswAAABAAAiAA0AzhYNAHMYAwAUGQAAYhkBAIQZAABQGgAAahoDAHsaAAAPGwEAbxsBAOYbAADEHAAAEx0AAPOBAml5KwK [...]
\ No newline at end of file
diff --git a/api/search.index/02d24023f94d.js b/api/search.index/02d24023f94d.js
new file mode 100644
index 000000000..090be0d19
--- /dev/null
+++ b/api/search.index/02d24023f94d.js
@@ -0,0 +1 @@
+rn_("ZQJGAAAhhBiFGEwaAh8ZEiAZIRlpbHITF00YThj/GAAZvxzAHBUATQAAAO0bc58bwhwFAFEAAAa7HWSiHQUAWAAABsQdZLod84cCcnYVAUcAABbsG9IcAooZYnLnF/cYzwXHsHAX5gPZoMAAABs5sFAT3wABAAmkDAUBwQAABJIdBZ0dcXNDAAOgYAAAHaSgYAAAG9Fkb3I7MAAAAQAAJwARAIkNAQDOFg0AcxgDABQZAABiGQEAhBkAABgaAABQGgAAahoDAHsaAAAPGwEAbxsBAK8bAADmGwAAxBwAABMdAABkHQAANQFAAAAXmRxHHQCDF2ZzsRayFrMWtBY1AkEAABFJEfwYBVgYFZcYfhtpcnPRCtIKwxfEF/UAQAAABdMXddcKugy7DLwMvQy+DL8MwAzBDMIMwwzFF8YXoxu2G4kcMUMAAHwZkRt1HNscBQHBAAAFthsGlBxmbjUAQAAABDQdcG0bbhuZHEc [...]
\ No newline at end of file
diff --git a/api/search.index/02de2e9ac01c.js b/api/search.index/02de2e9ac01c.js
deleted file mode 100644
index 90d386716..000000000
--- a/api/search.index/02de2e9ac01c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHEAAAoFR1THVQdBIkdYW8bAqBgAAAbgGFlBQLAAAADOB0EZhsiThlPGeMcZW95FQBKAAAGuR1kah2qHQUBwAAAAgEdCZgdaW8TBwKgMAAAHTlmafebHAAAQgABAEUADAABADgAGwKwMBtDAYthciFFAAB0HYUdhh0lAEAAAAOaHGl2HHcc7hwhQgAAYhpjGgQdMUEAAGMbZBtlGzQdBQHAAAAVcxxnHQKZHHV58wGEAgEDOjAAAAEAAAAAAAwAEAAAAGYYSRlKGUsZTBlNGQ0bnBt9HOIcSx1WHYMd+wJlbPMAA3B0dfXFFgAAcQMBAEQBbACFAUIAAAFMGwSMHGlz2xc1GTYZUBpRGpsb4RviG8ocFQBBAAAFjht3ExgUGBUAQAAAFHAdcR1tVBtPHfsCZG4xSAAAIxvGG8cbEB1FAEMAAACDHHMOGTQa6BvpG70cKwKgQAAAG49haQUAQAAAJeUboByhHHf0Ghs [...]
\ No newline at end of file
diff --git a/api/search.index/032fd03f1c12.js b/api/search.index/032fd03f1c12.js
new file mode 100644
index 000000000..a211475e3
--- /dev/null
+++ b/api/search.index/032fd03f1c12.js
@@ -0,0 +1 @@
+rn_("BQBCAAAARxpzrBYFAcAAAAW2GwaUHGZuZQBDAAAFfRlyuRa6FrsWvBa9Fr4WvxafAoagIAAAERWgcAAAHPCw8BzXAAERQUE=")
\ No newline at end of file
diff --git a/api/search.index/038261003a74.js b/api/search.index/038261003a74.js
deleted file mode 100644
index eef13877e..000000000
--- a/api/search.index/038261003a74.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLAAAAFyxwONR0Y+Bv7HGVpbUUAQwAAA7IcaTkR3xbgFuEWJRsFAcMAAAqbHQ2rHWV0IwQCoGAAABzbYnABfhkAABUAQAAABnQaYjgRXBrzgQJudBMAA6BgAAAda6BwAAAbimNucjswAAABAAAHAAIAihcGACAdAAAFAcAAAATZGwJ4GXB1BQHBAAAyfRt+G5IbdRwWchpzGmVpY4EDoOAAAB0xY3FzBQHAAAA1fBz0HFwdXR0MZh1hafMEAWb0fBgAAPED2gAoADFGAAB/GQobCxsNHfOCAnB2BQHEAAARexzzHAUbHWVyEwcCoCAAABpxYnLzeRgAAAEA7AAFAcAAABmLHAIdZC0YLhgvGDAYMRgyGDMYY3h1AUAAAAIcGhZgHb0dYWSsFt8bWB1ZHYgdjx2QHa8dIUYAAHcYeBhTHAUBwAAAEwcXCBc39hv3G9wc+hxtbmsDoDAAABimYW9yBQHBAAAWzRyrHQT [...]
\ No newline at end of file
diff --git a/api/search.index/03cab613b7b5.js b/api/search.index/03cab613b7b5.js
deleted file mode 100644
index 4d2c77044..000000000
--- a/api/search.index/03cab613b7b5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHHAAAE6xwCQB1pbgUBwAAABwYdEtcTZxlveQUAQAAACh4badMcBQHAAAAVZBllGQVjGWFyAQAAOjAAAAEAAAAAABMAEAAAABgZGRlxHHwcoxykHKUcphynHKgcqRyqHLActBy1HPQcIh1cHV0dfh0jAQKgEAAAG4B2efR0HAAAeAABAC0AxQNBAAAFzxwFxhcWWB1ZHRVDG84cYWNlc/gKFRLJFg4Xuxe8F3QYMhvPHNEc0hwzHbMdSwSwABbIAjugUAAAGH6gcAAAHFdkbW92dQBEAAASZxtoG2mkG6UbphunG/Ab8RvyG/MbAQACoNAAAB1VoTAAAB2JYXAB2hMAABsDoDAAABgnoBAAABySZG1zBQBGAAAQ3hv8HHKNG/MDAXAB+hYAABsCoEAAABlQYW8FAEMAAAa+HWS0HfMBAW8B2xYAAAUAQgAAB0cdcAYX+wJibPdfAMugQAAAGCxATTAbOjAAAAEAAAA [...]
\ No newline at end of file
diff --git a/api/search.index/03f9a38d60b1.js b/api/search.index/03f9a38d60b1.js
new file mode 100644
index 000000000..d00229ad1
--- /dev/null
+++ b/api/search.index/03f9a38d60b1.js
@@ -0,0 +1 @@
+rn_("FQBCAAAAThFzgw5NETFBAAD+DP8MCxkeGwUBwAAAEhwZBx0ZEB2eHWlvEwADsDAaRAL7sDAaRQABZmlwOjAAAAEAAAAAAA4AEAAAAOIWdxh4GGQZbhpvGnEbeRuhHOMc5BwpHTUdNh1uHSODAqAwAAAZZ2ZzFQBBAAAgOxo8Gu0bc58bwhwFAEQAAAdNHXAKF/MAAXQBixcAAPsDY29zBQBDAAADuBxpKhsjAwKgcAAAHXVwdPRlGAAA5QABAAEA+4QBAUg=")
\ No newline at end of file
diff --git a/api/search.index/044bd588adaf.js b/api/search.index/044bd588adaf.js
new file mode 100644
index 000000000..a2f2971bc
--- /dev/null
+++ b/api/search.index/044bd588adaf.js
@@ -0,0 +1 @@
+rn_("BQBCAAAS9Bj1GHNPEhUAQAAAFD0b+xtjJRpYG/MBAXPzmg4AAAEARQ4FAcAAAAdoHQG9HGFvBQHEAAACoB0BnB1hbyOFAqAAAAAdM2RmBQHEAAAGkR0DgR1vdBsCoOAAAB2saG83AgGIoDAAABzgoYAAAB3BsEAdGAABoEAAAB0doFAAAB00LJgD8u8cAACDACMChKBAAAAdC6AgAAAZEKAAAAAboxABAzowAAABAAAAAAAIABAAAAD6Fv0WJhiqGMsYPBudG54bJB37AmVs+wJpcg==")
\ No newline at end of file
diff --git a/api/search.index/049daa61e361.js b/api/search.index/049daa61e361.js
deleted file mode 100644
index 379bf39c0..000000000
--- a/api/search.index/049daa61e361.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAIGh1jBxuUHQUBwAAAAxYZBMkcYW/zAAJ0dfc1EQAAhwEBAAEAvgYBAIgBVQBAAAAFLRtlBBcFFxQZFRkqGysbGwKwYBsuAAFmdBsCoGAAABpvZW8BAQOgQAAAHR6wQBuQAAGgAAAAGCpmbXM7MAAAAQAAFAAGAKkXDgA5GwAAyBsAAPQbAAByHQAApR0BAAcNA4mgQAAAHFqgMAAAGWCgQAAAHQCgUAAAGwagIAAAFwOggAAAHaAnCQc6MAAAAQAAAAAACwAQAAAAkw7fDuAO4Q7pFuoW5heLGl8cCh1rHZgdKwKgEAAACu9wcw==")
\ No newline at end of file
diff --git a/api/search.index/04cfee2cd0bb.js b/api/search.index/04cfee2cd0bb.js
deleted file mode 100644
index d47e1137e..000000000
--- a/api/search.index/04cfee2cd0bb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAASFxkBHRkKHZgdaW8TAAOwMBo/AvqwMBpAAAFmaXA6MAAAAQAAAAAADwAQAAAA3hZyGHMYXxlpGmoaaxtzG5sc3RzeHCMdJR0vHTAdaB0=")
\ No newline at end of file
diff --git a/api/search.index/0541af0f8e63.js b/api/search.index/0541af0f8e63.js
deleted file mode 100644
index fabbfa759..000000000
--- a/api/search.index/0541af0f8e63.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQIBoDAAABjOajswAAABAADJAAIALw0AAD0QyAABAAGAF/YAEAFzOjAAAAEAAAAAABIAEAAAAMkMygx4F3kXIhgjGIEYghiDGPEYYBkdGmsaCBsWGygbTBuZHKgd+wJkbg==")
\ No newline at end of file
diff --git a/api/search.index/05666172c9d1.js b/api/search.index/05666172c9d1.js
new file mode 100644
index 000000000..98f3ed737
--- /dev/null
+++ b/api/search.index/05666172c9d1.js
@@ -0,0 +1 @@
+rn_("BQHAAAACkhwRtw6+E3R6KwKwQBs6AX9laQUBwAAAAbQdRgwYDRgOGA8Y6xxkZZFBAADLDMwMhhiHGIgYcBobGy0bUhuuHQUARAAAA5EbbjESZwUAh6BgAAAaMrBQFrgDa7BgGjMAATCZAjowAAABAAAAAAAfABAAAAA0EdUTFBfRF98XihiLGIwYjRiOGI8YrRgkGSUZJhknGSgZKRk6GTsZUxpVGlYacxt0G6Eb5xvoG38cshzQHKkd")
\ No newline at end of file
diff --git a/api/search.index/05987b717b47.js b/api/search.index/05987b717b47.js
deleted file mode 100644
index 859c163dd..000000000
--- a/api/search.index/05987b717b47.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFDAAAFqBsGdh10d9EbmBwFAEcAAAysHWHfHCMEA6AgAAAdVaBgAAAbfHJ0dgHvHAAAGwKg0AAAHQZjdAUBQwAABnobBnsbYm/tFhOBAqDgAAAc0GFjAQIAOzAAAAEAAMoAAgAQEQAAqRTJAIcOAIigwAAAG3mgQAAAE72gkAAAGW6hEAAAHUwxkAc7MAAAAQAAzQAEABAJAQDLCgAAzwvJAOMOAAABAISgMAAAERWgMAAAERagQAAAE8agcAAAGFcAFQE6MAAAAQAAAAAAIQAQAAAA7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgIjQqOCo8KkAoxETwRvRPOE88T2hdlGHQZgBmBGYMZhBkzG2Qcahy7HMYcBR37AnJ3CYSgYAAAHbOAF94AEyd8JTAoxcygUAAAGFcoIAIFAUEAAAd5GwJ8DmFyDwnzAANhZW/yYgEAAAEA")
\ No newline at end of file
diff --git a/api/search.index/059999704719.js b/api/search.index/059999704719.js
deleted file mode 100644
index 9b8dcd5c0..000000000
--- a/api/search.index/059999704719.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBLAAAGvh1ktB0bAqEwAAAds2FzZQBEAAAJDR1wPBg9GD4YPxhAGEEYQhhVAEAAAAhzG3R2DncOeA55DjQYNRgFAcsAAASMHQWXHXFz8wgBcDswAAABAAAGAAEADhsGABUATQAABJ0dZrodux0jAAOgEAAAGiKggAAAHOptc3QBdQ4AAFcDAoagcAAAGkag8AAAHSUIqAb02xMAAAEALQMBAFsDoFAAABgAYWVp")
\ No newline at end of file
diff --git a/api/search.index/05a132dab432.js b/api/search.index/05a132dab432.js
new file mode 100644
index 000000000..8c6286468
--- /dev/null
+++ b/api/search.index/05a132dab432.js
@@ -0,0 +1 @@
+rn_("AQYAOzAAAAEAAB8AAQDUGB8ABQBBAAAGvB1kpR0TggKgQAAAHYJtbwEAAaBgAAAdvmQ6MAAAAQAAAAAAFQAQAAAA6AjpCJwO6A4kEm0Zhhr1GrcbuBu5G7obuxu8G70bxRzGHOYcPB1IHX8drR1LA7AgDRcAMqBQAAAaJGJyc3uEoPAAABzVEEEB")
\ No newline at end of file
diff --git a/api/search.index/05bc5cd7a6b6.js b/api/search.index/05bc5cd7a6b6.js
new file mode 100644
index 000000000..1d554d727
--- /dev/null
+++ b/api/search.index/05bc5cd7a6b6.js
@@ -0,0 +1 @@
+rn_("BQBDAAAGxB1kuh3zAgFvAd8WAAATAISgQAAAGCywkB1eAAGgEAAAHSARQQDy+QwAAI0AIUYAAHwYfRhZHAUAQgAAM/wb/RviHAAdbBUZKwKwwB2TAAFjZisCsDAXCwABbW7rhKAwAAAYqwFABQ==")
\ No newline at end of file
diff --git a/api/search.index/05ec7ec836b9.js b/api/search.index/05ec7ec836b9.js
new file mode 100644
index 000000000..4f12bef58
--- /dev/null
+++ b/api/search.index/05ec7ec836b9.js
@@ -0,0 +1 @@
+rn_("BQHAAAADdxsAghhhcwUBwwAAF0MdRB0SpBylHGRzUwADoFAAABvVZm1u8hEXAACtADUAQAAAASYNcI0Ksw60DiwYdQFCAAABUhsEkhxpczoZOxlVGlYaoRvnG+gb0BwFAEIAAAK0HW2pHSOHAqCAAAAduGFrBQHAAAAA0w4Jrh1sd3MChKAAAAAbgQUEAvTiCgAAIwsBAPAGFQBCAAAH6xxt0RetGCOBAqAwAAAaImJrZQFDAAAIsR0DIRpiZP4V/xUAFgEWAhYDFgQWtwYAh6DQAAAdl6AAAAAMqJFBwPJhDQAAJgA=")
\ No newline at end of file
diff --git a/api/search.index/05fda69f86b1.js b/api/search.index/05fda69f86b1.js
new file mode 100644
index 000000000..cd714445c
--- /dev/null
+++ b/api/search.index/05fda69f86b1.js
@@ -0,0 +1 @@
+rn_("BQHDAAAGPxsB6xdibyUAQQAACIgcYpkOfxl/GzUBQgAAUYYYhxiIGHAaGxstGxU6G7kcaXNzG3QbfxyyHPMAAmtvAX4cAABjAAOgcAAAG9Bvc3Q7MAAAAQAABwACAMAWAAAoGgYABQHBAAAE2hwVLBu1HHFzBQHKAAAEkh0FnR1xcysCoCAAABpfYXLVAEQAAASjHWY9Gj4aPxpAGkEaQhpDGmEclRyaHJ0cUB3AHcEdFQBEAAAGZh1ksBblG5uEsDAREQK2oGAAABsrCUAIJQBBAAASDhkPGWXDEsQSxRIFAcAAAAM4G2T9Gv4a/xoAGwEbAhsDG3J4BQBQAAAGxB1kuh0rArBwHKIAAWRyBQBFAAAGdBxiYBgFAEcAABZiHWMdZnMcE4MCoDAAABphcHMbAqBwAAAbyWFlCQKhAAAAHU2gsAAAHQ1hb0sDoEAAABxYoKAAAByYY3F0BQBJAAAGTB12yBsFAcAAAAY [...]
\ No newline at end of file
diff --git a/api/search.index/060a9ccaa9ae.js b/api/search.index/060a9ccaa9ae.js
deleted file mode 100644
index a4b347e4c..000000000
--- a/api/search.index/060a9ccaa9ae.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAABrA4KuRtlaQUBRAAAB1McB2sdY3PQGwEBAbAAEh4AAXM7MAAAAQAAFAAJACANAACmDgUAjBgBAJQYAQDJGAEA7xgBAI8aAQDNGwEAnhwBAEsDoEAAAB1XoIAAABszY2x0ZQBEAAAGtx1kUxpUGj0bPhtQHVEdoh3zBQFj8hgXAAABABsCoCAAABarZW8FAEQAAAPEG3f3FQUBwAAAA8ITQFMNVA1VDVYNVw1hZfsCcnQ7A7CQHXcAEGFydQUAQQAABrYdZJ8dE4wCoEAAAB18bW8FAcUAAAR9GwXZG3Fz+wJhbxUASQAABB4dZqUdph0VAEkAAAaeHWSpG14dFQBMAAAGsR1kHR2THRUATAAABrAdZBwdkh37AmFp5wEBhaCAAAAc0wQwBvSaDAAAbQoBAL4AJQBGAAADuBtmsBheG18bOwOgEAAADJtlaW8VAEIAAAPTF2EcEh0SS4SgsAAAHFKgYAAAGYC [...]
\ No newline at end of file
diff --git a/api/search.index/061e419bd957.js b/api/search.index/061e419bd957.js
new file mode 100644
index 000000000..d851b929f
--- /dev/null
+++ b/api/search.index/061e419bd957.js
@@ -0,0 +1 @@
+rn_("BQBBAAAERxp0ihsTggKw8B1BAAFlcwEBAaEAAAAc1XTzDgkAAAEAAQAxQgAA/BYVGBYYYB0FAEUAABBIGEkYc8EXSwOgUAAAFvqwEArIDLNkbnL/AIWgAAAACvEQSUA=")
\ No newline at end of file
diff --git a/api/search.index/06a7121ef26c.js b/api/search.index/06a7121ef26c.js
new file mode 100644
index 000000000..e70b3193d
--- /dev/null
+++ b/api/search.index/06a7121ef26c.js
@@ -0,0 +1 @@
+rn_("NQFDAAAXmRxHHQCDF2ZzsRayFrMWtBYFAEAAAANxHGpnHCUAQwAAES4dSR1lHRtTHVQd8wECbHP1/BUAAFsC2AEBAAYBOwOgEAAADolhZnTzAAFp9NwTAAABADEFAQAhSgAAVRpWGqEb+wJjdA==")
\ No newline at end of file
diff --git a/api/search.index/06e4ac568e3c.js b/api/search.index/06e4ac568e3c.js
new file mode 100644
index 000000000..76cfc04d2
--- /dev/null
+++ b/api/search.index/06e4ac568e3c.js
@@ -0,0 +1 @@
+rn_("VQBCAAADuBxpPREeEuMW5BblFiobFQBFAAAFSh1j7BztHFUAQAAAVKQYpRimGKcYqBipGHQgDYUNehmAGYQahRpRRQAAnhifGKAYoRiiGKMYBQBFAAAGiB1iFx0VAEEAAATKHGabHZwdFQBCAAAE6hxmnx2gHfsCYW8hRQAAXBqzG7Qb8wMDbHB384sZAAB8AdUBBQBCAAAE+xtjWBsjgQKgIAAAGKplbCMAA6DwAAAdp6CAAAAbtWVmcvMfDQAAEhACAPMAhSiAEjswAAABAAAHAAIA0woAAKkMBgCbhKCgAAAbhqBAAAAdbxBBQA==")
\ No newline at end of file
diff --git a/api/search.index/070842e01b58.js b/api/search.index/070842e01b58.js
new file mode 100644
index 000000000..b1665a24e
--- /dev/null
+++ b/api/search.index/070842e01b58.js
@@ -0,0 +1 @@
+rn_("MUkAAEUbRhtHG0gbMUMAAPwb/RviHAAd8wACbHU6MAAAAQAAAAAAEQAQAAAAngyfDKAMoQyiDKMMpAylDKYMkg4eEScR8hZ6GHsYFRkrGUodRQBCAAAAiRxzExk5Gu4b7xvDHDsDoCAAABbKZWdsBQHAAAADlRsKjh1pbjuEoEAAABzZoVAAAB2DAUkA")
\ No newline at end of file
diff --git a/api/search.index/08032e6abfec.js b/api/search.index/08032e6abfec.js
deleted file mode 100644
index 4cd5b94ef..000000000
--- a/api/search.index/08032e6abfec.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQEAOzAAAAEAAKUAAgDEEwEAAxajAAUARgAABr4dZLQd8wEBYQGEDQAANwAAxaAAAAARJaBwAAAdQqCAAAAbJAABSCEBowoAAA==")
\ No newline at end of file
diff --git a/api/search.index/08690822a000.js b/api/search.index/08690822a000.js
new file mode 100644
index 000000000..16158139a
--- /dev/null
+++ b/api/search.index/08690822a000.js
@@ -0,0 +1 @@
+rn_("FQBIAAAECx1lnRueGyOCA7BgGiYCgqBAAAAZCWRpcvMAAWk7MAAAAQAATgEEADYGyAALCAAAWhgAAJQZgwAFAcAAABeJG8MbA4UbZXAVAEsAAAQLHWWdG54b8wEBaTswAAABAACEAAIAWhgAAJQZgwAVAEAAAAWUG3cYGBkY+wJnaQUARQAABrccYgwZBQHBAAACDRkCCxlidPMAAXT0IREAABIBAQBVBkUBQgAAJF4cXxwsHQWSG2N32xfcF74YvxjLGysCoEAAABoxZWkFAUQAAA+vHRJjGmQaY3JhGAUBwAAAI0YZRxlsHAnjG2FvtwwDiLAwF9oEk6BwAAAaZaAwAAAYwDSYEvWODgAAAQA0ACYJ1AC1AUAAABR2HXcdALIdbXPoFukWhBiFGEQZRRlMGlIaWhuxG/ccVR37hShgBA==")
\ No newline at end of file
diff --git a/api/search.index/08786df366ec.js b/api/search.index/08786df366ec.js
new file mode 100644
index 000000000..5dfc436b3
--- /dev/null
+++ b/api/search.index/08786df366ec.js
@@ -0,0 +1 @@
+rn_("FQBFAAAIIB1jDBuaHQUBwAAAAxsZBM8cYW/zAAJ0dfc5EQAAhwEBAAEAvwYBAIgBVQBAAAAFMhtlCBcJFxkZGhkvGzAbGwKwYBszAAFmdBsCoGAAABp0ZW8BAQOgQAAAHSSwQBuWAAGgAAAAGC9mbXM7MAAAAQAAFAAGAK0XDgA+GwAAzhsAAPobAAB4HQAAqx0BAAcNAImgQAAAHGCgMAAAGWWgQAAAHQagUAAAGwugIAAAFweggAAAHaYnCQc6MAAAAQAAAAAADQAQAAAAlQ7hDuIO4w7kDuUO7RbuFuoXkBplHBAdcR2eHQ==")
\ No newline at end of file
diff --git a/api/search.index/08b6ff85e2ba.js b/api/search.index/08b6ff85e2ba.js
deleted file mode 100644
index 7026306d6..000000000
--- a/api/search.index/08b6ff85e2ba.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAGIB0BVRwzcQUBwAAAAokbBOgcaW9HAoSGoDAAAByQoCAAABxUoHAAABzXoDAAAByRwIgDKwKgYAAAG8BjdA==")
\ No newline at end of file
diff --git a/api/search.index/08bb06feefc7.js b/api/search.index/08bb06feefc7.js
deleted file mode 100644
index 750b40b7a..000000000
--- a/api/search.index/08bb06feefc7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBEAAAD2BtscBnXHDFIAABFHUkdWx1jHTFCAABsHHocrhy4HAUBwAAADKsdDZEdYWgPB4eggAAAHWWggAAAHW6hUAAAHbOgoAAAHZseABzzgQJwdisCoCAAAB0pb3I=")
\ No newline at end of file
diff --git a/api/search.index/08c6a40cdb4f.js b/api/search.index/08c6a40cdb4f.js
new file mode 100644
index 000000000..a7dd57064
--- /dev/null
+++ b/api/search.index/08c6a40cdb4f.js
@@ -0,0 +1 @@
+rn_("cUAAAMAWKBopGioaKxosGi0aLhoFAcEAAATaHBUsG7UccXMFAcsAAASSHQWdHXFzYUUAAP0a/hr/GgAbARsCGwMbJwcAh6DAAAAc3rBAGQ4AAaBwAAAbKxGhAzswAAABAAAkAAgAIxEBADUSAwC2GAYAMxkGAIkaBgATGwYAQhsAAFAbAQAbA6FAAAAdc6AgAAAY+GVoaQ==")
\ No newline at end of file
diff --git a/api/search.index/0963cd1714ad.js b/api/search.index/0963cd1714ad.js
new file mode 100644
index 000000000..40bd65c03
--- /dev/null
+++ b/api/search.index/0963cd1714ad.js
@@ -0,0 +1 @@
+rn_("BQBSAAAGvh1krR0FAFQAAAa/HWSwHfOEAnB0BQBRAAAGux1koh0FAFgAAAbEHWS6HQUAUgAABsIdZLMdBQBPAAAGvR1kqB3zhwJjcAUASAAABmYdZOUbBQBJAAAGqh1keR0ThAOgwAAAHYmggAAAHWVmcHMbAqFAAAAdp2ZsBQBaAAAGwx1ktR37AmFlpzMAyg0Cf1MHwqDAAAAdBaDAAAAdBqAwAAAYaAAbhB0B3RsAACUBQAAAHkEdQh0z2hO8F2cYOBpmd7UWhh2HHUUAQQAAFP4c/xxtyBjJGMoYyBzJHAUARQAABMEcZXUaGwKgIAAAGw11eTMDhLAgF+IAAaBAAAAbDgIBAzowAAABAAAAAAALABAAAAA7EeAW4RbLF8wXIhmyG9Ab6RvqG/gcZR0FAEAAAAdUG3KKDvsCcHK1AUIAAAd/GQYfHWF2shizGGkZahkzGjQaXBtdG5scnBxFHUYdBQHFAAAoGx1 [...]
\ No newline at end of file
diff --git a/api/search.index/097098f89ab8.js b/api/search.index/097098f89ab8.js
deleted file mode 100644
index 9d4d32b5f..000000000
--- a/api/search.index/097098f89ab8.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLAAAAFyxwONR0Y+Bv7HGVpbUUAQwAAA7IcaTkR3xbgFuEWJRsFAcMAAAqbHQ2rHWV0IwQCoGAAABzbYnABfhkAABUAQAAABnQaYjgRXBrzgQJudBMAA6BgAAAda6BwAAAbimNucjswAAABAAAHAAIAihcGACAdAAAFAcAAAATZGwJ4GXB1BQHBAAAyfRt+G5IbdRwWchpzGmVpY4EDoOAAAB0xY3FzBQHAAAA1fBz0HFwdXR0MZh1hafMEAWb0fBgAAPED2gAoADFGAAB/GQobCxsNHfOCAnB2BQHEAAARexzzHAUbHWVyEwcCoCAAABpxYnLzeRgAAAEA7AAFAsAAABmLHAIdC9sbZC0YLhgvGDAYMRgyGDMYY254dQFAAAACHBoWYB29HWFkrBbfG1gdWR2IHY8dkB2vHSFGAAB3GHgYUxwFAcAAABMHFwgXN/Yb9xvcHPocbW5rA6AwAAAYpmFvcgUBwQAAFs0 [...]
\ No newline at end of file
diff --git a/api/search.index/0984e1d40685.js b/api/search.index/0984e1d40685.js
new file mode 100644
index 000000000..58bccdee2
--- /dev/null
+++ b/api/search.index/0984e1d40685.js
@@ -0,0 +1 @@
+rn_("IUUAANIXrhivGBUARgAABsMdZI4dtR3zgQJldxUAQgAAFM4cJR112Rd7GTFFAACSGZMZmhviG7uEsAAaSAEvACAL")
\ No newline at end of file
diff --git a/api/search.index/099dc2d839ed.js b/api/search.index/099dc2d839ed.js
deleted file mode 100644
index c15988112..000000000
--- a/api/search.index/099dc2d839ed.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("dQBAAAAHyhtvvBYjGiQaJRomGicaKBopGgUBwQAABNQcFScbrxxxcwUBywAABIwdBZcdcXNhRQAA+Br5Gvoa+xr8Gv0a/hoFAFEAAAa+HWS0HWcOAIigwAAAHNiwQBkJAAGgcAAAGyYZoQM7MAAAAQAAJwALACcNAAAOEQAAHxEBAEERAAAxEgMAsRgGAC4ZBgCEGgYADhsGADwbAABKGwEA")
\ No newline at end of file
diff --git a/api/search.index/09a405084719.js b/api/search.index/09a405084719.js
new file mode 100644
index 000000000..0124cdbd9
--- /dev/null
+++ b/api/search.index/09a405084719.js
@@ -0,0 +1 @@
+rn_("BQHAAABUzhOGF4cXiBeJF4oXBIsXaHQFAcEAAAK1FgFsG3J0MUIAAMYYxxhxGhwbZQBDAAAD2BdhJRImEicSKBIpEioSKxIFAcAAAAj1GiUGGAcYCBhvdQEAzaAgAAAOsEDrTiPKHqCwAAAaYrBAGSwAAW+8xNw4LaAwAAAY02yljAGtQqDAAAAcXE98SmppiHCVcXiQHaBAAAAWtrBgGAkAAaAgAAAOscDMMQ87MAAAAQAAGQIGAEgEAAD/BsgAMQ0AAEEQyAB3FYMAhBcBAA==")
\ No newline at end of file
diff --git a/api/search.index/0a0d7bb95b03.js b/api/search.index/0a0d7bb95b03.js
new file mode 100644
index 000000000..ca7bc5e78
--- /dev/null
+++ b/api/search.index/0a0d7bb95b03.js
@@ -0,0 +1 @@
+rn_("UUEAAIMbhBuYG3sc2hySHdUARwAABKMdZj0aPho/GkAaQRpCGkMaYRyVHJocnRxQHcAdwR0bAqBgAAAbxWN0+wJucw==")
\ No newline at end of file
diff --git a/api/search.index/0adef101d369.js b/api/search.index/0adef101d369.js
deleted file mode 100644
index 28216553b..000000000
--- a/api/search.index/0adef101d369.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAWjx2QHWWPDnUAQAAAFPgc+Rxt0g7DGMQYxRj0GPUYwhzDHAUBxwAAB4QdBWkdZnQTBAKAE9MAE/hkcjswAAABAABxAQYAMhECAFkSYQDwFgEAGhdaAJEaVwD5G1cA24SgAAAAGFYNIAA=")
\ No newline at end of file
diff --git a/api/search.index/0affb4565ff9.js b/api/search.index/0affb4565ff9.js
deleted file mode 100644
index 3446f962f..000000000
--- a/api/search.index/0affb4565ff9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBSAAAGuB1kpx0FAFQAAAa5HWSqHfOEAnB0BQBRAAAGtR1knB0FAFgAAAa+HWS0HQUAUgAABrwdZK0dBQBPAAAGtx1koh3zhwJjcAUASAAABmAdZN8bBQBJAAAGpB1kcx0ThAOgwAAAHYOggAAAHV9mcHMbAqFAAAAdoWZsBQBaAAAGvR1krx37AmFlpzMAyimtM27YvqDAAAAc/6DAAAAdAKAwAAAYYwAbhB0B1xsAACUBQAAAHjsdPB0z1hO4F2IYMxpmd7EWgB2BHUUAQQAAFPgc+RxtwxjEGMUYwhzDHAUARQAABLscZXAaGwKgIAAAGwh1eTMDhLAgF94AAaBAAAAbCQIBAzowAAABAAAAAAALABAAAAA3EdwW3RbHF8gXHRmsG8ob4xvkG/IcXx0FAEAAAAdOG3KIDvsCcHK1AUIAAAd6GQYZHWF2rRiuGGQZZRkuGi8aVhtXG5Uclhw/HUAdBQHFAAAoFR1 [...]
\ No newline at end of file
diff --git a/api/search.index/0b1d38d44045.js b/api/search.index/0b1d38d44045.js
new file mode 100644
index 000000000..75f8a925d
--- /dev/null
+++ b/api/search.index/0b1d38d44045.js
@@ -0,0 +1 @@
+rn_("BQBGAAABUhppzxsFAcQAAAjTHAcPHWJsgUwAAKkcqhyrHKwcrRyuHK8csBwoHTFEAABSGFMYVBhVGAUBwAAABlEaA8gXcnXPAcWhAAAAHUmwYBlwAAEEATACAYECsUAdlQABsPAdXgABZ3MFAcAAAAB8HQZvGWV0BQHDAAAMSB0Pfh1jZvsDYWVvBQHAAAAHexsHfBtjbROBAqCAAAAbfXd4BQBFAAAHFB1zZhsrAqAwAAAaNW10AYUDoEAAABxsoUAAAB2voIAAAB0sY2VsGwKwYBxiAAFudPMAAmFlAbgdAAAJAqEAAAAdR6DAAAAcqGRuBQHAAAATxRfGFwPHF2VsGwKgAAAAF5dpcwECArEwHZMAAaBwAAAb2WZsAS4ZAAAbA6DQAAAdWKAQAAARC2FlbwUBwAAADP0cA1EYY3QrAqCwAAAdfW1uBQLAAAAF+BgKaxwGTxpwc3RbA7BAF8MAAWFsbwEA0aBAAAA [...]
\ No newline at end of file
diff --git a/api/search.index/0b3ffd4a2084.js b/api/search.index/0b3ffd4a2084.js
deleted file mode 100644
index 8ab1a67fd..000000000
--- a/api/search.index/0b3ffd4a2084.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("cUAAALwWIxokGiUaJhonGigaKRoFAcEAAATUHBUnG68ccXMFAcsAAASMHQWXHXFzYUUAAPga+Rr6Gvsa/Br9Gv4aJwcBh6DAAAAc2LBAGQkAAaBwAAAbJhGhAzswAAABAAAkAAgAHxEBADESAwCxGAYALhkGAIQaBgAOGwYAPBsAAEobAQAbArAQGkAAAWN0")
\ No newline at end of file
diff --git a/api/search.index/0b5e848f43e7.js b/api/search.index/0b5e848f43e7.js
deleted file mode 100644
index e20a0dc6b..000000000
--- a/api/search.index/0b5e848f43e7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBEAAADbxxuvhcFAcAAAAOJHVNGGEcY/xoAG2EbYhtsdSFIAAAVHVMdVB37AmFvVwAAhaBgAAAbVbBgG1YAAbAAHXcAEDSAAjswAAABAAAOAAUACgkAALQKAAAsGAAAhxkFAHkaBQAbAqAwAAAYmGV0")
\ No newline at end of file
diff --git a/api/search.index/0baf54df87fa.js b/api/search.index/0baf54df87fa.js
deleted file mode 100644
index f07fb21ef..000000000
--- a/api/search.index/0baf54df87fa.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHEAAARexzzHAUbHWVyEwUCoCAAABpxYnL20BcAAAEAqAABADUAtwDlAUEAAASnGBaVHJYcZnALGC0aVRueG58boBuhG6IboxvqG+sb7BvtG+4b7xv7Am50")
\ No newline at end of file
diff --git a/api/search.index/0be871273b10.js b/api/search.index/0be871273b10.js
deleted file mode 100644
index 79dbd45a1..000000000
--- a/api/search.index/0be871273b10.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHDAAASEBdOGhPkFxUba24lAEEAAAiCHGKXDnoZeRs1AUIAAFGBGIIYgxhrGhYbKBsVNRuzHGlzbRtuG3kcrBzzAgJrbwF4HAAA+wJlbw==")
\ No newline at end of file
diff --git a/api/search.index/0be8872096e5.js b/api/search.index/0be8872096e5.js
deleted file mode 100644
index c98c182b9..000000000
--- a/api/search.index/0be8872096e5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBKAAAYgB2BHXdeHCcAAIawYBqPAAGgsAAAHMGgwAAAHOCgQAAAGJigwAAAHOEgERk7MAAAAQAABgACABgNAwBcDQIA")
\ No newline at end of file
diff --git a/api/search.index/0c3cbe42c9a1.js b/api/search.index/0c3cbe42c9a1.js
deleted file mode 100644
index b65455260..000000000
--- a/api/search.index/0c3cbe42c9a1.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFBAAAFSxoQ5xboFmVzuBO5EwUBwQAABOEcDIcdaW/7AmVvFQBCAAAGGR12Px1AHSOCA6BAAAAc67AAHYAAAWluc/sCYXI=")
\ No newline at end of file
diff --git a/api/search.index/0d027f5307c2.js b/api/search.index/0d027f5307c2.js
new file mode 100644
index 000000000..56830de4e
--- /dev/null
+++ b/api/search.index/0d027f5307c2.js
@@ -0,0 +1 @@
+rn_("BQLGAAABeB0Gmh0Iph1pc3QjhgKgQAAAHQRjbgUATwAABrwdZKUdBQBJAAAGpB1kZB0FAEwAAAa3HWSZHQUATAAABrYdZJgd+wJhafOEA21udPsCb3U=")
\ No newline at end of file
diff --git a/api/search.index/0d0b13e9cf3a.js b/api/search.index/0d0b13e9cf3a.js
new file mode 100644
index 000000000..6f275010b
--- /dev/null
+++ b/api/search.index/0d0b13e9cf3a.js
@@ -0,0 +1 @@
+rn_("BQBRAAAGwx1ktR0FAcQAACgbHVkdWh0Ejx1hbxsCoGAAABuGYWUhQgAAUxlUGekcBQHAAAAyxhjHGHEaHBsDbBtrcGsDoDAAAB0+ZW95FQBKAAAGvx1kcB2wHQUBwAAAAgcdCZ4daW8TBwKgMAAAHT9mafehHAAAQgABAEUADAABADgAGwKwMBtJAYthciFFAAB6HYsdjB0lAEAAAAOgHGl8HH0c9BwhQgAAZxpoGgodMUEAAGkbahtrGzodBQHAAAAVeRxtHQKfHHV58wGEAgEDOjAAAAEAAAAAAAwAEAAAAGsYThlPGVAZURlSGRIbohuDHOgcUR1cHYkd+wJlbAUAQgAABsIdZLMd8wCEAJAM9goRAAC/BXIDAQBFAWwABQHAAAAQIBkhGQMnHWZzGwKggAAAHYNlbyFDAAByGXIbah2FAUIAAAFSGwSSHGlz3xc6GTsZVRpWGqEb5xvoG9AcFQBBAAAFlBt3GBg [...]
\ No newline at end of file
diff --git a/api/search.index/0d2e5d4f02fe.js b/api/search.index/0d2e5d4f02fe.js
deleted file mode 100644
index a8285a641..000000000
--- a/api/search.index/0d2e5d4f02fe.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUsAAHEZghqDGjUAQAAAE+oX6xdpvxjAGPUa9hoFAEMAAADpF3MIHWMBA7AQGT8AAWluc/JQGQAAOQQFAcAAABVWG1cbAhobYW8FAEQAAANvHG6+FwUBwAAABVUbFh0bURtsbgUBwAAAA4kdU0YYRxj/GgAbYRtiG2x1BQLDAAAIbh0CrhwIWx1jdXcjBAKgYAAAG4dicAHzFgAAIUcAABUdUx1UHfsCbHT7AmFv9wAAhbAAHXcAEDSAAjswAAABAAAPAAYACgkAALQKAAAsGAAAhxkFAHkaBQCQHAAAe4SgMAAAGJgQEAY=")
\ No newline at end of file
diff --git a/api/search.index/0d5f32465ea5.js b/api/search.index/0d5f32465ea5.js
deleted file mode 100644
index 1bad13507..000000000
--- a/api/search.index/0d5f32465ea5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQABsAASHgABczswAAABAAAUAAkAIA0AAKYOBQCMGAEAlBgBAMkYAQDvGAEAjxoBAM0bAQCeHAEAKwKg0AAAG4hociFGAACwHbEdth0FAsMAAA6RHQJsHAhFHXR1dyMFAqBgAAAbImJwAckTAAAbAqAwAAAdV2FoNwgAiLBwGlkAkqBAAAAdqKCAAAAbM7BAHGIAAaAwAAAaVhycBDowAAABAAAAAAAQABAAAAA2GDcYOBg5GDoYOxhDGUQZIhpUHFocHB0dHXwdkh2THZ8d")
\ No newline at end of file
diff --git a/api/search.index/0d8e28a64132.js b/api/search.index/0d8e28a64132.js
new file mode 100644
index 000000000..a2dcfe200
--- /dev/null
+++ b/api/search.index/0d8e28a64132.js
@@ -0,0 +1 @@
+rn_("BQJGAAAhzhv6G3gdBpodCKYdaXN0kBoVAEEAABRuHG8cbU4bTxsTBAKgIAAAG7BpcvcvGQAAAQBCAQEALQEyADIBkwCEsEAYlwLnsJAcxQABFCEA8yUYAABQAwEA")
\ No newline at end of file
diff --git a/api/search.index/0db7dba8c16d.js b/api/search.index/0db7dba8c16d.js
deleted file mode 100644
index 9947eb15b..000000000
--- a/api/search.index/0db7dba8c16d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAABTRppyRsFAcQAAAjNHAcJHWJsgUwAAKMcpBylHKYcpxyoHKkcqhwiHTFEAABNGE4YTxhQGAUBwAAABkwaA8QXcnXPAcWhAAAAHUOwYBlrAAEEATACAYECsUAdjwABsPAdWAABZ3MFAcAAAAB2HQZqGWV0BQHDAAAMQh0PeB1jZvsDYWVvBQHAAAAHdRsHdhtjbROBAqCAAAAbd3d4BQBFAAAHDh1zYBsrAqAwAAAaMG10AYUDoEAAABxmoUAAAB2poIAAAB0mY2VsGwKwYBxcAAFudPMAAmFlAbIdAAAJAqEAAAAdQaDAAAAcomRuBQHAAAATwRfCFwPDF2VsGwKgAAAAF5NpcwECArEwHY0AAaBwAAAb02ZsASkZAAAbA6DQAAAdUqAQAAARB2FlbwUBwAAADPccA0wYY3QrAqCwAAAdd21uBQLAAAAF8xgKZRwGShpwc3RbA7BAF78AAWFsbwEA0aBAAAA [...]
\ No newline at end of file
diff --git a/api/search.index/0e052cdb942f.js b/api/search.index/0e052cdb942f.js
new file mode 100644
index 000000000..5387a2d95
--- /dev/null
+++ b/api/search.index/0e052cdb942f.js
@@ -0,0 +1 @@
+rn_("MUEAAKMOFxjOHCUdIUIAAPsX/Bf9FxUARQAABUodY+wc7RwFAEkAAAaIHWIXHVOFA6AAAAAZemZzd/OCAmRpY4EDoIAAAB07aGl0")
\ No newline at end of file
diff --git a/api/search.index/0e192e867bfb.js b/api/search.index/0e192e867bfb.js
deleted file mode 100644
index 9087e7563..000000000
--- a/api/search.index/0e192e867bfb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAJdR04pBulG6YbpxtvcgUAQgAABrwdZK0d8wABbQEGEQAABQHAAAARGxkcGQh9HWVvcUEAAOQW5RZ/GIAYRxpNGqsb8RwFAEoAAAa1HWScHWcDAYagMAAAGPGgIAAAGRqCCQM6MAAAAQAAAAAAHQAQAAAADxcRF0gYSRhaGPoY+xg4GTkZOhk7GTwZPRk+GRgaNBt3G8kbYBx+HH8cgByBHLkcuhzLHPUc9hz/HEYdBQBCAAACrh1tox0jhwKggAAAHbJhayMLAqCgAAAdqGFjAfAcAAA7hKAgAAAbCaCAAAAdNghAhFMAA7BwHTsAAWlwdAF/FwAA")
\ No newline at end of file
diff --git a/api/search.index/0e371e1ed4c7.js b/api/search.index/0e371e1ed4c7.js
new file mode 100644
index 000000000..b1d20291b
--- /dev/null
+++ b/api/search.index/0e371e1ed4c7.js
@@ -0,0 +1 @@
+rn_("BQBGAAAFKh1yeBsxRwAANxvXHNgcOR31AEYAAAmDHXJfGD0ZPhk/GUAZQRlCGUMZORuEHIUchhyHHPsc/BwFHQUBwAAAARwRAiEbZXljAAOwYByxAPlkdHb3fhcAAAEAAQCFAYwB6AIuAAUBwAAAUooYixiMGI0YjhiPGFSMGY0ZjhmPGZAZkRlrdgUASwAAGIYdhx13ZBz7A2xwdHMAhKAwAAATyiFIADswAAABAAANAAUAVQQAAAQIAwAVEQAAPxEAAOwSBgA=")
\ No newline at end of file
diff --git a/api/search.index/0e3a23c76a09.js b/api/search.index/0e3a23c76a09.js
deleted file mode 100644
index d06376e34..000000000
--- a/api/search.index/0e3a23c76a09.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQUCsBAbqwFGoJAAAB19aXI7MAAAAQAAEgAJAFoYAAA4GQYAGBoAADQbAAB3GwAAYBwAAH4cAwD1HAEA/xwAACsDoDAAABgssJAcuQABYWVp")
\ No newline at end of file
diff --git a/api/search.index/0ec40bd3fedc.js b/api/search.index/0ec40bd3fedc.js
new file mode 100644
index 000000000..a5bfb38e3
--- /dev/null
+++ b/api/search.index/0ec40bd3fedc.js
@@ -0,0 +1 @@
+rn_("MUMAAPIX8xd3GeMbBQFBAAAPrx0SYxpkGmNyYRghQgAAUxIzGzQbVwEAhbBQGSwAAbCgHMUAAQBBB/VaDQAAAQABAAEAlQ0=")
\ No newline at end of file
diff --git a/api/search.index/0ed63bb597e5.js b/api/search.index/0ed63bb597e5.js
new file mode 100644
index 000000000..2b1ecd18f
--- /dev/null
+++ b/api/search.index/0ed63bb597e5.js
@@ -0,0 +1 @@
+rn_("FQFAAAAFUBoQ6xbsFmVzvBO9EyFFAAB6HPIc8xz7AmpwBQHBAAAE5xwMjR1pb/sCZW8VAEIAAAYfHXZFHUYdBQBEAAAneh2LHYwdc/EcM4IDsAAdhgABaW5z+wJhcg==")
\ No newline at end of file
diff --git a/api/search.index/0ee5bfc71bef.js b/api/search.index/0ee5bfc71bef.js
new file mode 100644
index 000000000..ab0740270
--- /dev/null
+++ b/api/search.index/0ee5bfc71bef.js
@@ -0,0 +1 @@
+rn_("BQHAAAAGJh0BWxwzcQUBwAAAAo8bBO4caW9HAoSGoDAAAByWoCAAABxaoHAAABzdoDAAAByXwIgDKwKgYAAAG8ZjdA==")
\ No newline at end of file
diff --git a/api/search.index/0f38da6737ea.js b/api/search.index/0f38da6737ea.js
new file mode 100644
index 000000000..4595750e9
--- /dev/null
+++ b/api/search.index/0f38da6737ea.js
@@ -0,0 +1 @@
+rn_("8UYAAB0ZHhl3HKkcqhyrHKwcrRyuHK8csBy2HLocuxwoHYQdBQBIAAAAZxxzNhsrArBAGHoAAW9yMwEDoGAAAB0NY2ZvOjAAAAEAAAAAAAcAEAAAACsNLA2mDWQYChkRGRIZAx0=")
\ No newline at end of file
diff --git a/api/search.index/0f4b9247221c.js b/api/search.index/0f4b9247221c.js
new file mode 100644
index 000000000..89fcbc551
--- /dev/null
+++ b/api/search.index/0f4b9247221c.js
@@ -0,0 +1 @@
+rn_("AQCEoDAAABEZoDAAABEaoEAAABPKoHAAABhcABUBOjAAAAEAAAAAACEAEAAAAO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CI8KkAqRCpIKNRFAEcET0hPTE94Xahh5GYUZhhmIGYkZOBtqHHAcwRzMHAsd")
\ No newline at end of file
diff --git a/api/search.index/0fb14ae217d6.js b/api/search.index/0fb14ae217d6.js
new file mode 100644
index 000000000..10054a6d6
--- /dev/null
+++ b/api/search.index/0fb14ae217d6.js
@@ -0,0 +1 @@
+rn_("FQFDAAAFrhsGfB10d9cbnhwFAUMAAAaAGwaBG2Jv8RYbAqDgAAAc1mFjKwKwMBJVCB9hZTFBAAAZGhoaGxocGgEBADswAAABAACEAAIALw0AAOkOgwDzAAJldfQzDQAADhABACoAAQEAOzAAAAEAAMoAAgAUEQAArRTJACsCoBAAAA5/aXWVAEEAAAQmGGaYF5kX/hf/FwAYARgCGAkZHB0dHQUARAAAEBEYEhhzlRcbAqAgAAATwWJyBQBAAAAGxB1kuh37AmRyBQHAAAA3khmTGZob4hsLfxtucjetAIygkAAAGXOxQB2VAAGgYAAAHYOhEAAAHVIS7wYRhJdxuQc7MAAAAQAAzQAEABIJAQDNCgAA0QvJAOcOAAA=")
\ No newline at end of file
diff --git a/api/search.index/0fb794c2b806.js b/api/search.index/0fb794c2b806.js
new file mode 100644
index 000000000..666855035
--- /dev/null
+++ b/api/search.index/0fb794c2b806.js
@@ -0,0 +1 @@
+rn_("BQBRAAAGwx1ktR0xRAAAxhjHGHEaHBsFAEIAAAbCHWSzHfMAAW0BChEAAAUBwAAAESAZIRkIgx1lb3FBAADoFukWhBiFGEwaUhqxG/ccBQBKAAAGux1koh0hRAAAeRlqHMwcZQBEAAAGvR1kWBpZGkMbRBtWHVcdqB1n8wCMoDAAABj2oMAAAB2OoCAAABkfsDAbcgH4tikXOjAAAAEAAAAAACgAEAAAACoNRxITFxUXHBcdF00YThhfGHIY/xgAGT0ZPhk/GUAZQRlCGUMZhxkdGlcaKRs5G30bxxvPG2YchByFHIYchxy/HMAcxxzRHOcc+xz8HAUdTB0=")
\ No newline at end of file
diff --git a/api/search.index/0fc9e956b3ae.js b/api/search.index/0fc9e956b3ae.js
deleted file mode 100644
index 0fa7e8104..000000000
--- a/api/search.index/0fc9e956b3ae.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAH6hwDQhppeRUATQAABJ0dZrodux0VAEIAAAflHG3NF6gYBQBCAAAE9RtjUhsVAEIAAAILGXL5FqUY84ECZWwVAEUAAAmhHWb2GNQbBQHBAAABHRoH1xtpcAGCAqCQAAAdJ6EQAAAdiGl1KwKgwAAAHVVydPdhAMygEAAAGiKgQAAAGWmhMAAAHYmggAAAG6+wUB13ABDADLULOjAAAAEAAAAAAAcAEAAAAB0NdQ4qEtoTiReEGysdLR0=")
\ No newline at end of file
diff --git a/api/search.index/1093a69137b0.js b/api/search.index/1093a69137b0.js
deleted file mode 100644
index 04ebba2b9..000000000
--- a/api/search.index/1093a69137b0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("QUIAAHQZgxmEGWQcxhxRQQAAHxsjG8YbxxsPHRAdBQJAAAAXuhu7GxdPG1AbBAMbZmx0rQ77AmVvKwKgYAAAGXpjdDMAA6BgAAAdGWFydjowAAABAAAAAAAMABAAAACaCq0YrhhkGWUZLhovGlYbVxuVHJYcPx1AHQ==")
\ No newline at end of file
diff --git a/api/search.index/1096c64e0813.js b/api/search.index/1096c64e0813.js
deleted file mode 100644
index 42d0c8a06..000000000
--- a/api/search.index/1096c64e0813.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUUAAOUboByhHAUASgAAFHAdcR1tTx0VAEYAABQSHRMdbekcbB2zAISg0AAAHUoggBI7MAAAAQAAhQADAC0NAADlDoMA9BoAAA==")
\ No newline at end of file
diff --git a/api/search.index/10976b0e0282.js b/api/search.index/10976b0e0282.js
new file mode 100644
index 000000000..b080609ed
--- /dev/null
+++ b/api/search.index/10976b0e0282.js
@@ -0,0 +1 @@
+rn_("BQHAAABD/hf/FwAYARgCGDeqG6sbrButG291IwACoJAAAB17b3IB/AgAAAUAQgAABsIdZLMd8wABbQEKEQAABQHAAAARIBkhGQiDHWVvcUEAAOgW6RaEGIUYTBpSGrEb9xwFAEoAAAa7HWSiHWcDAYagMAAAGPagIAAAGR+CCQM6MAAAAQAAAAAAHQAQAAAAExcVF00YThhfGP8YABk9GT4ZPxlAGUEZQhlDGR0aORt9G88bZhyEHIUchhyHHL8cwBzRHPsc/BwFHUwdBQBCAAACtB1tqR0jhwKggAAAHbhhayMLAqCgAAAdrmFjAfYcAAA7hKAgAAAbDqCAAAAdPAhAhBUEQAAAA8gWFNIT0xMHahgEmhcKzxthZWl0d6EKogpnBACHoGAAABs/sGAdEACOoBAAABfrsHAdQQABEuEE8yISAAABAGAF")
\ No newline at end of file
diff --git a/api/search.index/10faa5ea5078.js b/api/search.index/10faa5ea5078.js
deleted file mode 100644
index fc3a34714..000000000
--- a/api/search.index/10faa5ea5078.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBDAAAEhRxmih2LHXUAQAAAFPgc+Rxt0g7DGMQYxRj0GPUYwhzDHBsCoBAAAA6PZG4FAEUAAAS7HGVwGhsCoCAAABsIdXk3AAGFoBAAABvLsCAX3gABoEAAABsJAkEDOjAAAAEAAAAAABAAEAAAACERNxHDFtwW3RbFF8cXyBcdGWkZNRqsG8ob4xvkG/IcXx0xRAAAFRgWGBcYGBgFAcAAAC90HYUdhh0ndBzsHO0cYXIjBAOgEAAAHIawUBzQAGFlcHMB+xYAAPMAhBYBAPJxAQAAXxI=")
\ No newline at end of file
diff --git a/api/search.index/11232d179d65.js b/api/search.index/11232d179d65.js
new file mode 100644
index 000000000..3f4b8ee24
--- /dev/null
+++ b/api/search.index/11232d179d65.js
@@ -0,0 +1 @@
+rn_("IUIAAPsX/Bf9FxUARQAABUodY+wc7RwFAEkAAAaIHWIXHVOFA6AAAAAZemZzd1MAA7AwGSMCuGRoafKJDgAAbwo=")
\ No newline at end of file
diff --git a/api/search.index/118d273254f2.js b/api/search.index/118d273254f2.js
deleted file mode 100644
index 5eb05538d..000000000
--- a/api/search.index/118d273254f2.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUEAAHQc7BztHAUBwAAAEMgWAxkByRZkbwGBAqDQAAAdVaEwAAAdiWFwpwEChqBQAAAZULBwG2cAAaDAAAAc6zRBEPWdDQAAAQCnCh4B+AAbArAgGM4Em2Vz")
\ No newline at end of file
diff --git a/api/search.index/11a2d57e0525.js b/api/search.index/11a2d57e0525.js
new file mode 100644
index 000000000..fa52827ac
--- /dev/null
+++ b/api/search.index/11a2d57e0525.js
@@ -0,0 +1 @@
+rn_("dQFCAAABUhsEkhxpczoZOxlVGlYaoRvnG+gb0BwFAEIAAAK0HW2pHSOHAqCAAAAduGFrYwIDoKAAAB2uYWNr8wUWAAABAPAG")
\ No newline at end of file
diff --git a/api/search.index/127079777b0f.js b/api/search.index/127079777b0f.js
new file mode 100644
index 000000000..8c1c68690
--- /dev/null
+++ b/api/search.index/127079777b0f.js
@@ -0,0 +1 @@
+rn_("JQBAAAAz2hO8F2cYOBp3tRaGHYcdtQFCAAAHfxkGHx1hdrIYsxhpGWoZMxo0GlwbXRubHJwcRR1GHQUBxQAAKBsdWR1aHQSPHWFvBQHAAAAEbBsiUxlUGekcb3kVAEoAAAa/HWRwHbAdBQHAAAACBx0Jnh1pbxMIAqAwAAAdP2Zp96EcAABCAAEARQAMAAEAOAAhRQAAeh2LHYwdJQBAAAADoBxpfBx9HPQcIUIAAGcaaBoKHTFBAABpG2obaxs6HQUBwAAAFXkcbR0Cnxx1efMBhAIBAzowAAABAAAAAAAMABAAAABrGE4ZTxlQGVEZUhkSG6IbgxzoHFEdXB2JHfsCZWzzAANwdHUByRYAABUAQQAABZQbdxgYGRgVAEAAABR2HXcdbVobVR37AmRuRQBEAAAAiRxzExk5Gu4b7xvDHAUAQQAAJesbphynHHf5GuccA8mggAAAHJ6gIAAAF9+gYAAAHStATAULOzA [...]
\ No newline at end of file
diff --git a/api/search.index/1270ab172e0e.js b/api/search.index/1270ab172e0e.js
new file mode 100644
index 000000000..b81ee53d7
--- /dev/null
+++ b/api/search.index/1270ab172e0e.js
@@ -0,0 +1 @@
+rn_("AQEAOzAAAAEAAMgAAQDkE8gAMUIAAJIZkxmaG+IbBQBSAAAGwh1ksx0FAE8AAAa9HWSoHfMGAmNw9QwYAAABAAEAAQDcBBUAQAAAALQdNZsYnBj7hBhACA==")
\ No newline at end of file
diff --git a/api/search.index/127529f6baf9.js b/api/search.index/127529f6baf9.js
new file mode 100644
index 000000000..cf7945675
--- /dev/null
+++ b/api/search.index/127529f6baf9.js
@@ -0,0 +1 @@
+rn_("BQBBAABE/hf/FwAYARgCGHL8CBUAQwAAICUYdRt2G3N3GngaFQFAAAAE5hwLyxxibdwO3Q5rhLBAEhkGYKAgAAAWqwwQAjsDoMAAAB07ZXN0")
\ No newline at end of file
diff --git a/api/search.index/12bcf283825c.js b/api/search.index/12bcf283825c.js
deleted file mode 100644
index 2b6110346..000000000
--- a/api/search.index/12bcf283825c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHTB0iZxhoGDobb3kjAQKwYBpkAiBsdDowAAABAAAAAAAJABAAAAAqESsRRxJIEkkSShIGGCUZZRx/HQUBxQAAKBUdUx1UHQSJHWFvBQHAAAAEZhsiThlPGeMcb3kVAEoAAAa5HWRqHaodBQHAAAACAR0JmB1pbxMIAqAwAAAdOWZp95scAABCAAEARQAMAAEAOAAhRQAAdB2FHYYdJQBAAAADmhxpdhx3HO4cIUIAAGIaYxoEHTFBAABjG2QbZRs0HQUBwAAAFXMcZx0CmRx1efMBhAIBAzowAAABAAAAAAAMABAAAABmGEkZShlLGUwZTRkNG5wbfRziHEsdVh2DHfsCZWzzAANwdHUBxRYAABUAQQAABY4bdxMYFBgVAEAAABRwHXEdbVQbTx37AmRuRQBDAAAAgxxzDhk0Gugb6Ru9HCsCoEAAABuPYWkFAEEAACXlG6AcoRx39BoFAcAAAAq+HAeYHGx [...]
\ No newline at end of file
diff --git a/api/search.index/12e8603ab869.js b/api/search.index/12e8603ab869.js
new file mode 100644
index 000000000..37082b689
--- /dev/null
+++ b/api/search.index/12e8603ab869.js
@@ -0,0 +1 @@
+rn_("AQEAOzAAAAEAAKUAAgDIEwEABxajAAUARgAABsQdZLod8wEBYQGGDQAANwAAxaAAAAARKaBwAAAdSKCAAAAbKQABSCEBpQoAAA==")
\ No newline at end of file
diff --git a/api/search.index/12ef06118497.js b/api/search.index/12ef06118497.js
new file mode 100644
index 000000000..aca4b721f
--- /dev/null
+++ b/api/search.index/12ef06118497.js
@@ -0,0 +1 @@
+rn_("MUMAAHwafRq1G1ccBQBHAAAMsh1h5RwjAwOgIAAAHVugYAAAG4JydHYB9RwAAPsCaG8TAAOw4B1eAAGg0AAAHQxjZXQB4xMAAA==")
\ No newline at end of file
diff --git a/api/search.index/12f96fa962e9.js b/api/search.index/12f96fa962e9.js
deleted file mode 100644
index 1a9634653..000000000
--- a/api/search.index/12f96fa962e9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAGvh1ktB0xSAAAjRmOGZQb3Bv7AmFlJQBBAAAhVhwoHUMdZRgbTR1OHZuEoGAAABySsDARIQWiQQARBQBJAAAGGB1iLBsTgQKwUBlbAAFmdysCoCAAABp1Ym4FAcAAAAdWGAXzGnJ01wAAxqBAAAAdGqBAAAARP7CgG2EAAUBEEAr23AoAAEkCcABGCa0ACwE=")
\ No newline at end of file
diff --git a/api/search.index/134ed6e3b09e.js b/api/search.index/134ed6e3b09e.js
deleted file mode 100644
index 41bcff888..000000000
--- a/api/search.index/134ed6e3b09e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUUAAFsZXBmOGwUBwAAAQMsMzAy0Fh4aLBoC8hpoeQUARgAABn4dZv0cBQBFAAAGGB1iLBsFAEAAAASNHGO+G/MCAnN3ATYbAAArAqBgAAAadWFpFQBDAAAEOxtmeh17HRUARgAABIUcZoodix0FAcAAABSPHZAdNSMbxhvHGxAdYWXHAgCGoMAAAB1CoPAAAB14sAANUgzNJGAG8wQJAABNCR4INwcAh6AwAAANhqCAAAAcUTABFzswAAABAABaABUATQQBANkHAQDxCgIA/gwBAJsNAACEDgAAjw4AAJUOAAANEQAAThIAAMgSHwDDEwAA+BYAABAYAQATGAEAzBgAAM8YHwBEGgEAQxsAAM4cAABaHQAA")
\ No newline at end of file
diff --git a/api/search.index/137be03cd861.js b/api/search.index/137be03cd861.js
new file mode 100644
index 000000000..3120599c2
--- /dev/null
+++ b/api/search.index/137be03cd861.js
@@ -0,0 +1 @@
+rn_("BQBBAAAWlR2WHWWRDnUAQAAAFP4c/xxt1A7IGMkYyhj5GPoYyBzJHAUBxwAAB4odBW8dZnQTBAKAE9cAE/hkcjswAAABAABxAQYANhECAF0SYQD0FgEAHhdaAJYaVwD/G1cA24SgAAAAGFsNIAA=")
\ No newline at end of file
diff --git a/api/search.index/13a9353da35a.js b/api/search.index/13a9353da35a.js
new file mode 100644
index 000000000..520a8dd31
--- /dev/null
+++ b/api/search.index/13a9353da35a.js
@@ -0,0 +1 @@
+rn_("BQHAAAAFXxoEHx1jcwUAQgAAArQdbakdI4cCoIAAAB24YWsjDgKgoAAAHa5hYwH2HAAAS4Q/IAV1j9CgQAAAGYagUAAAGjoYAANrA6AAAAAbhjFlaQ==")
\ No newline at end of file
diff --git a/api/search.index/13bfcb382e30.js b/api/search.index/13bfcb382e30.js
new file mode 100644
index 000000000..cbca7cf35
--- /dev/null
+++ b/api/search.index/13bfcb382e30.js
@@ -0,0 +1 @@
+rn_("BQBHAAAYhh2HHXdkHAUBwAAAlbcbuBu5G7obuxu8G70bxRzGHDwdBiMbbnQVAEQAAAQLHWWdG54bBQHGAAAHih0Fbx1mdJMAhLDQHVMAAaBQAAAduzUAAAEHCQAAJQBEAAAGvh1khhp/Ha0dtwQAh7AwEr8KVYAT1wAT+LAAF+8AAYoBBzswAAABAAB9AQ4A/QcAALMKAAC3DgAANhECAF0SYQC+EwAA9BYBAB4XWgBNGgEAlhpXAP8bVwCNHAMAWB0AAKIdAAA=")
\ No newline at end of file
diff --git a/api/search.index/1421c464b5e7.js b/api/search.index/1421c464b5e7.js
deleted file mode 100644
index 8742df4a0..000000000
--- a/api/search.index/1421c464b5e7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBKAAAGGR12Px0FAEUAAAysHWHfHCOBAqCgAAAc72FzJQBAAAATJRgmGGlpGGoYWhlBQgAALhEvEdoWqhtVHQUDQAAAUh8ZIBkhGSIZIxkkGTP4FhAYERhaHQYRGVR5Gnoaexp8Gn0afhprcHJ2jhwFAcIAAAZaHQAkGG1zGwKggAAAHGdhabUBQQAAFGgcaRwA2RZtc5IOUxJUElUSVhJXElgSaxlsGRsbSBtJGwUBwAAABWsYEiIYIxh1eecvAMugwAAAHaywYBhsAxCgAAAADnvAQKg7OzAAAAEAACsADgDsCgIA4AwWAAkRAwDdEwEAShgAACoZAQBtGgEAmhsAAMwbAABSHAAA3xwAAO8cAAD+HAAAVx0AAA==")
\ No newline at end of file
diff --git a/api/search.index/14839a7ca52d.js b/api/search.index/14839a7ca52d.js
new file mode 100644
index 000000000..a846a0058
--- /dev/null
+++ b/api/search.index/14839a7ca52d.js
@@ -0,0 +1 @@
+rn_("BQLGAAABeB0Gmh0Iph1pc3QjhgKgQAAAHQRjbgUATwAABrwdZKUdBQBJAAAGpB1kZB0FAEwAAAa3HWSZHQUATAAABrYdZJgd+wJhafODA21udCsDoGAAAB0goNAAAB2vbG1uFQFFAAAGdhwIGh1id2IYYxj7A2FvdQ==")
\ No newline at end of file
diff --git a/api/search.index/14a15911266b.js b/api/search.index/14a15911266b.js
new file mode 100644
index 000000000..48f1eff2b
--- /dev/null
+++ b/api/search.index/14a15911266b.js
@@ -0,0 +1 @@
+rn_("ZQBBAAAT0BPRE2bjCsEWwhbDFsQWxRbGFgUBwQAAA2gZVnMYdBh1GHYYYhljGWpwMUIAAGkZahmbHJwcIUgAAOMc5BwpHTUAQgAAATodaegcUR1cHYkdOwOgoAAAHXBwdHUjhAOgEAAAG1qgMAAAHOlpc3TzgQJpbisDsGAaNgABoBAAABjAZ3J0+wNhcnU=")
\ No newline at end of file
diff --git a/api/search.index/14d56267330b.js b/api/search.index/14d56267330b.js
new file mode 100644
index 000000000..4df2fcff6
--- /dev/null
+++ b/api/search.index/14d56267330b.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHZx0BvBxhbwUBxAAAAp8dAZsdYW8jhQKgAAAAHTFkZgUBxAAABpAdA4Adb3QbAqDgAAAdq2hvNwGDh6AwAAAc36GAAAAdwKBAAAAdHKBQAAAdMiyIAw==")
\ No newline at end of file
diff --git a/api/search.index/1516a5f94579.js b/api/search.index/1516a5f94579.js
new file mode 100644
index 000000000..00afb2648
--- /dev/null
+++ b/api/search.index/1516a5f94579.js
@@ -0,0 +1 @@
+rn_("FQBFAAAGeBxiaRhNGUMAA6BAAAAX3qBwAAAZfmVtdwEoDQAAFQBAAABQgxuEG5gbexzaHJIddH0djR0FAcAAABVcG10bAh8bYW/VAEcAAASjHWY9Gj4aPxpAGkEaQhpDGmEclRyaHJ0cUB3AHcEdGwKgYAAAG8VjdAUARAAAA3UcbsIXBQHAAAAFWxsWIhtXG2xuBQHAAAADjx1TSxhMGAQbBRtnG2gbbHUFAsMAAAh0HQK0HAhhHWN1dyMEAqBgAAAbjWJwAfcWAAAhRwAAGx1ZHVod+wJsdPsCYW/zAIc0oAY7MAAAAQAAEQAHAAwJAAC2CgAAvxMBADEYAACMGQUAfhoFAJYcAAA=")
\ No newline at end of file
diff --git a/api/search.index/1516cfc0f17c.js b/api/search.index/1516cfc0f17c.js
deleted file mode 100644
index 25792cfe0..000000000
--- a/api/search.index/1516cfc0f17c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQJGAAAhyBv0G3IdBpQdCKAdaXN0ixoVAEEAABRoHGkcbUgbSRsTBAKgIAAAG6ppcvcqGQAAAQBCAQEALAEyADIBkwCEsEAYkgLmsJAcvwABFCEA8yAYAABPAwEA")
\ No newline at end of file
diff --git a/api/search.index/151a1ddbfc90.js b/api/search.index/151a1ddbfc90.js
deleted file mode 100644
index 1d164126c..000000000
--- a/api/search.index/151a1ddbfc90.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAUgRuCG20bGvMCAWnyEhkAAAEAFQBBAAAU+Bz5HG3CHMMc8wcBafWsGwAANwABAA4BbQAFAcQAAAEbGwpaHWlu+wNjb3A1AEMAAAE0HWniHEsdVh2DHROIAqAwAAAc43N0BQHAAAAK1RwHfxthaQUBwAAABVUaBhobY2wVAEUAAAakHWRzHaEdE4MDoMAAAB0PoDAAAB1SZm5zZyoAirBgGhkAAaBgAAAaVqEAAAAdELCAG0oAAaDgAAAdKeS4AzswAAABAAA3AA8AHA0AAGANIgAAGAAAURgAAPYYAAAhGgAA1BsAAKIcAACrHAAAYB0AAJ4dAACkHQAAsB0BALUdBAC8HQIA")
\ No newline at end of file
diff --git a/api/search.index/158093e7df2e.js b/api/search.index/158093e7df2e.js
deleted file mode 100644
index 51527b49e..000000000
--- a/api/search.index/158093e7df2e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLAAACLoxykHKUcphynHKgcqRyqHCIdE9AcMR0IeBxvcnkxRAAATRhOGE8YUBgFAcAAAAZMGgPEF3J1Dw7IoQAAAB1DsGAZawABoBAAABPIsCAaSAABoGAAABxfBEU4Ag==")
\ No newline at end of file
diff --git a/api/search.index/160704ec753e.js b/api/search.index/160704ec753e.js
new file mode 100644
index 000000000..4b0ce8f68
--- /dev/null
+++ b/api/search.index/160704ec753e.js
@@ -0,0 +1 @@
+rn_("BQPCAAAXaBxpHAOKHTKZGJoYzhjPGBKbGJwYaGpzeWUBQgAAFrEcqh1WhByFHIYchxz7HPwcZHZ+F38XgBcFGZEaeR2nHSsCZrgDKro2ZW0rAqDgAAAdPG9yAQIAOzAAAAEAAMoAAgCFDgAATxHJAGFAAADWDJ4YnxigGKEYohijGAUARQAABogdYhcdFQBBAAAEyhxmmx2cHRUAQgAABOocZp8doB37AmFvIUUAAFwasxu0G9MBhLAwG8AAAQCoEPWpFwAA4gF8AdUBAwBFAEIAAAN1HG6tFsIX7BftF0Eb+wNlbHhFAEQAABiiHKMcZDARUBJREgIZMhsbAqDQAAAdfnJ0BQBBAAAUhxuIG20gGvMCAWnyFxkAAAEAFQBBAAAU/hz/HG3IHMkc8wcBafWyGwAANwABAA4BbQAFAcQAAAEgGwpgHWlu+wNjb3A1AEMAAAE6HWnoHFEdXB2JHROIAqAwAAAc6XN0BQH [...]
\ No newline at end of file
diff --git a/api/search.index/1623941662d2.js b/api/search.index/1623941662d2.js
new file mode 100644
index 000000000..0f6686fb6
--- /dev/null
+++ b/api/search.index/1623941662d2.js
@@ -0,0 +1 @@
+rn_("BQBBAAAGvB1kpR0TjAKgQAAAHYJtbwUBxQAABIMbBd8bcXP7AmFvFQBJAAAEJB1mqx2sHRUASQAABqQdZK8bZB0VAEwAAAa3HWQjHZkdFQBMAAAGth1kIh2YHfsCYWkFAcAAAAdSHSJsGG0YQBtveSMCArBgGmkCIWx0OzAAAAEAAAYAAwAuEQEASxIDAAsYAAAVAEEAABPXF2IaYSASIRLHDwCIoIAAABzZoGAAAB2/HDEGOjAAAAEAAAAAAAoAEAAAAJ4KnAwLFwwXyhf9HHAdkx2UHa8dsB0=")
\ No newline at end of file
diff --git a/api/search.index/168d9f5bc1bf.js b/api/search.index/168d9f5bc1bf.js
new file mode 100644
index 000000000..5cff2062a
--- /dev/null
+++ b/api/search.index/168d9f5bc1bf.js
@@ -0,0 +1 @@
+rn_("cUAAAMAWKBopGioaKxosGi0aLhoFAcEAAATaHBUsG7UccXMFAcsAAASSHQWdHXFzYUUAAP0a/hr/GgAbARsCGwMbJwcBh6DAAAAc3rBAGQ4AAaBwAAAbKxGhAzswAAABAAAkAAgAIxEBADUSAwC2GAYAMxkGAIkaBgATGwYAQhsAAFAbAQAbArAQGkUAAWN0")
\ No newline at end of file
diff --git a/api/search.index/16945023aa5b.js b/api/search.index/16945023aa5b.js
new file mode 100644
index 000000000..9a5aef6d3
--- /dev/null
+++ b/api/search.index/16945023aa5b.js
@@ -0,0 +1 @@
+rn_("BQHEAAARgRz5HAUhHWVyEwUCoCAAABp2YnL21BcAAAEAqQABADUAtwDlAUEAAASsGBabHJwcZnAQGDIaWxukG6UbphunG6gbqRvwG/Eb8hvzG/Qb9Rv7Am50")
\ No newline at end of file
diff --git a/api/search.index/16a662455a01.js b/api/search.index/16a662455a01.js
deleted file mode 100644
index 206b895f0..000000000
--- a/api/search.index/16a662455a01.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAUgRuCG20bGvMCAWnyEhkAAAEAFQBBAAAU+Bz5HG3CHMMc8wcBafWsGwAANwABAA4BbQAFAcQAAAEbGwpaHWlu+wNjb3A1AEMAAAE0HWniHEsdVh2DHROIAqAwAAAc43N0MUAAAKEOEhjIHB8dBQHAAAAK1RwHfxthaQUBwAAABVUaBhobY2wVAEUAAAakHWRzHaEdE4MDoMAAAB0PoDAAAB1SZm5zBQHAAAAXOx08HQp1HXB0QwADsJAdjwABoHAAAB1maXBzAcMXAAAbAqCAAAAbIXJzAQCPoDAAABvasGAaGQABJ/yPYSsWEtjLgqz9EPob1QU+oGAAABpWoQAAAB0QG8J4A2szsIAbSgABTyzOgOs/axTLsNuJoOAAAB0pYhzZsLrxoDAAABemoDAAABE/9fhHOzAAAAEAAEMAFADkCgcAHA0AAGANIgAAGAAAURgAAPYYAAB4GQAAIRoAANQbAACiHAA [...]
\ No newline at end of file
diff --git a/api/search.index/16cfdd9dffce.js b/api/search.index/16cfdd9dffce.js
new file mode 100644
index 000000000..a3d74738f
--- /dev/null
+++ b/api/search.index/16cfdd9dffce.js
@@ -0,0 +1 @@
+rn_("BQBBAAAUhxuIG20gGvMCAWnyFxkAAAEAFQBBAAAU/hz/HG3IHMkc8wcBafWyGwAANwABAA4BbQAFAcQAAAEgGwpgHWlu+wNjb3A1AEMAAAE6HWnoHFEdXB2JHROIAqAwAAAc6XN0MUAAAKMOFxjOHCUdBQHAAAAK2xwHhRthaQUBwAAABVoaBh8bY2wVAEUAAAaqHWR5HacdE4MDoMAAAB0VoDAAAB1YZm5zBQHAAAAXQR1CHQp7HXB0QwADsJAdlQABoHAAAB1saXBzAccXAAAbAqCAAAAbJnJzAQCPoDAAABvgsGAaHgABbtcu/6SpC+wn6xHfGxe3qb7+oGAAABpboQAAAB0WDbROia/dsIAbUAABXIIzDeW2dFSTjso7oOAAAB0vKxscdb7noDAAABeqoDAAABFD9fhHOzAAAAEAAEMAFADmCgcAHg0AAGINIgAFGAAAVhgAAPsYAAB9GQAAJhoAANobAACoHAA [...]
\ No newline at end of file
diff --git a/api/search.index/1721facdbdcf.js b/api/search.index/1721facdbdcf.js
deleted file mode 100644
index 8fb0cbfb9..000000000
--- a/api/search.index/1721facdbdcf.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFJAAAHMh0FAx1iZogbkR01AUIAABeTHEEdAH8XZnOtFq4WrxawFgUARQAABrEcYgcZBQHBAAACCBkCBhlidPMAAXT0HREAABIBAQBUBkUBQgAAJFgcWRwmHQWMG2N31xfYF7kYuhjFGysCoEAAABosZWkFAUQAAA+pHRJeGl8aY3JcGAUBwAAAI0EZQhlmHAndG2FvtwwCiLAwF9YEkaBwAAAaYKAwAAAYuzSYEvWMDgAAAQA0ACQJ0wD7A2VpdA==")
\ No newline at end of file
diff --git a/api/search.index/176c53603932.js b/api/search.index/176c53603932.js
deleted file mode 100644
index 4c35f1c8c..000000000
--- a/api/search.index/176c53603932.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUIAAPYX9xf4FxUARQAABUQdY+Yc5xwFAEkAAAaCHWIRHVOFA6AAAAAZdWZzd1MAA7AwGR4Ct2RoafKHDgAAbAo=")
\ No newline at end of file
diff --git a/api/search.index/180836370777.js b/api/search.index/180836370777.js
deleted file mode 100644
index 505cfae8a..000000000
--- a/api/search.index/180836370777.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAACCBkCBhlidBsCoCAAAB01YXkjAAKgwAAAHJRldDswAAABAAAcAAkAsAwHAB0RAAAvEgEALRgGAIQYAAD4GgYAlhsAANgcAAA4HQAA")
\ No newline at end of file
diff --git a/api/search.index/183f8e098e9a.js b/api/search.index/183f8e098e9a.js
deleted file mode 100644
index 299881554..000000000
--- a/api/search.index/183f8e098e9a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBEAAAGcRxmXxgrA6AQAAAWqrAgE7sAAWVvciUAQQAABrUdZLUOuhOcHUsDsGAYvQABoCAAAByMY3R6TwGFsEAbNQF+sEAW6wABoLAAAB0AMCEE")
\ No newline at end of file
diff --git a/api/search.index/18bfea916ba9.js b/api/search.index/18bfea916ba9.js
deleted file mode 100644
index 314b9f9d9..000000000
--- a/api/search.index/18bfea916ba9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAIGh1jBxuUHQUBwAAAAxYZBMkcYW/zAAJ0dfc1EQAAhwEBAAEAvgYBAIgBVQBAAAAFLRtlBBcFFxQZFRkqGysbGwKwYBsuAAFmdBsCoGAAABpvZW8BAQOgQAAAHR6wQBuQAAGgAAAAGCpmbXM7MAAAAQAAFAAGAKkXDgA5GwAAyBsAAPQbAAByHQAApR0BAAcNAImgQAAAHFqgMAAAGWCgQAAAHQCgUAAAGwagIAAAFwOggAAAHaAnCQc6MAAAAQAAAAAACwAQAAAAkw7fDuAO4Q7pFuoW5heLGl8cCh1rHZgd")
\ No newline at end of file
diff --git a/api/search.index/18e76ae7b130.js b/api/search.index/18e76ae7b130.js
new file mode 100644
index 000000000..10de55aba
--- /dev/null
+++ b/api/search.index/18e76ae7b130.js
@@ -0,0 +1 @@
+rn_("8UYAAB0ZHhl3HKkcqhyrHKwcrRyuHK8csBy2HLocuxwoHYQdBQBIAAAAZxxzNhsrArBAGHoAAW9yMwIDoGAAAB0NY2ZvOjAAAAEAAAAAAAcAEAAAACsNLA2mDWQYChkRGRIZAx0=")
\ No newline at end of file
diff --git a/api/search.index/190605a2f8c1.js b/api/search.index/190605a2f8c1.js
deleted file mode 100644
index e31b50213..000000000
--- a/api/search.index/190605a2f8c1.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAkJxvZG68cAngZcHUVAEYAABBvG3Abc3IacxpBQgAAfRt+G5IbdRzUHPOBAmVpRQBCAAAYnBydHGQsEUwSTRL9GC0bAQIAOzAAAAEAAMoAAgCDDgAASxHJAPMAAW07MAAAAQAAzAADAOwIAADACcoA2BYAABUAQAAAJXEZghqDGnd+DjIdBQBBAAARbhlvGWWGDt8LyKDgAAAdMbAwHGoAUUALyAE=")
\ No newline at end of file
diff --git a/api/search.index/190e8fb443fd.js b/api/search.index/190e8fb443fd.js
deleted file mode 100644
index 6d6a9c7c6..000000000
--- a/api/search.index/190e8fb443fd.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAADcRsAfRhhcwUBwwAAFz0dPh0SnhyfHGRzUwADoFAAABvPZm1u8g0XAACtADFAAACLCrEOsg4nGPsCeXplAEQAAAa3HWRTGlQaPRs+G1AdUR2iHfMFAWPyGBcAAAEAGwKgIAAAFqtlbwUBwAAAA0MaAAwXYXMFAcAAAAQMG1A2GDcYOBg5GDoYOxhpcwUBwwAAFwsdDB0SzRvOG2RzBQBEAAADxBt39xUFAcAAAAPCE0BTDVQNVQ1WDVcNYWX7AnJ0twcAiKAAAAARFbCQHXcAECE4DTswAAABAAATAAYAEQMEADoRAADDEgQAlxcGAOocAACgHQAA")
\ No newline at end of file
diff --git a/api/search.index/191eb8a7ee41.js b/api/search.index/191eb8a7ee41.js
new file mode 100644
index 000000000..40b4a44ff
--- /dev/null
+++ b/api/search.index/191eb8a7ee41.js
@@ -0,0 +1 @@
+rn_("BQHAAAACDRkCCxlidBsCoCAAAB07YXkjAAKgwAAAHJpldDswAAABAAAcAAkAsgwHACERAAAzEgEAMhgGAIkYAAD9GgYAnBsAAN4cAAA+HQAA")
\ No newline at end of file
diff --git a/api/search.index/19680e2795fa.js b/api/search.index/19680e2795fa.js
new file mode 100644
index 000000000..5fe2fcc9f
--- /dev/null
+++ b/api/search.index/19680e2795fa.js
@@ -0,0 +1 @@
+rn_("BQHAAAAUOhu5HAK+E2VpYUEAAIYYhxiIGHAaGxstG64d8wACaXP0cxsAAAEACwEzACsCoLAAAB1zdHlHAACFoGAAABcPoJAAABzcoGAAAB2usFAbiwABHBAC8gMIAADTDw==")
\ No newline at end of file
diff --git a/api/search.index/196a237a97e1.js b/api/search.index/196a237a97e1.js
new file mode 100644
index 000000000..9da746249
--- /dev/null
+++ b/api/search.index/196a237a97e1.js
@@ -0,0 +1 @@
+rn_("BQHFAAAoGx1ZHVodBI8dYW8FAcAAAARsGyJTGVQZ6RxveRUASgAABr8dZHAdsB0FAcAAAAIHHQmeHWlvEwgCoDAAAB0/Zmn3oRwAAEIAAQBFAAwAAQA4ACFFAAB6HYsdjB0lAEAAAAOgHGl8HH0c9BwhQgAAZxpoGgodMUEAAGkbahtrGzodBQHAAAAVeRxtHQKfHHV58wGEAgEDOjAAAAEAAAAAAAwAEAAAAGsYThlPGVAZURlSGRIbohuDHOgcUR1cHYkd+wJlbPMAA3B0dQHJFgAAFQBBAAAFlBt3GBgZGBUAQAAAFHYddx1tWhtVHfsCZG5FAEQAAACJHHMTGTka7hvvG8McBQBBAAAl6xumHKccd/ka5xwCyaCAAAAcnqAgAAAX36BgAAAdK0BMBQs7MAAAAQAABgADAEISAwDxHAAAZx0BABsCoAAAAA6JaXk=")
\ No newline at end of file
diff --git a/api/search.index/198e03b41f64.js b/api/search.index/198e03b41f64.js
new file mode 100644
index 000000000..728798a42
--- /dev/null
+++ b/api/search.index/198e03b41f64.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHUh0ibBhtGEAbb3kFAcAAABVpGoocBF0caXnzAQJsdDowAAABAAAAAAAJABAAAAAuES8RSxJMEk0SThILGCoZaxyFHQ==")
\ No newline at end of file
diff --git a/api/search.index/19b73b96d11a.js b/api/search.index/19b73b96d11a.js
new file mode 100644
index 000000000..edbe0befe
--- /dev/null
+++ b/api/search.index/19b73b96d11a.js
@@ -0,0 +1 @@
+rn_("FQBGAAAGpB1krxtkHdUAQgAABKMdZj0aPho/GkAaQRpCGkMaYRyVHJocnRxQHcAdwR2TAISgMAAAGFugcAAAGmISAQH0GRoAAAEAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/19e12b496aa7.js b/api/search.index/19e12b496aa7.js
deleted file mode 100644
index 6c9b2c096..000000000
--- a/api/search.index/19e12b496aa7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("9QBAAAAFzxd11Qq4DLkMugy7DLwMvQy+DL8MwAzBDMEXwhedG7AbgxwxQwAAdxmLG28c1RwFAcEAAAWwGwaOHGZuNQBAAAAELh1wZxtoG5McQR0FAcAAAAdiHQG3HGFvBQHEAAACmh0Blh1hbyOFAqAAAAAdLWRmBQHEAAAGix0Dex1vdBsCoOAAAB2maG9nNAGKoFAAABrpoDAAABzaoYAAAB27sEAdEgABoEAAAB0XLpgHOjAAAAEAAAAAAAkAEAAAAKIOow6kDu4a7xr3GoIcxxzpHGwdFQBDAAAOfx1jqxisGEOBA6BAAAAZN7AQF3gAAWFpblcJAImgQAAAHQWggAAAGQKwYBitAAGwIA6FCoagMAAAFqgSsQc6MAAAAQAAAAAALAAQAAAA+QiRCpIKkwo2ES0SQhKpFvYW+RYSFxMXkhe+F+cX6BchGKUYpxjGGA4ZNBpMGjcbOxtTG5cbmBukG6UbphunG7w [...]
\ No newline at end of file
diff --git a/api/search.index/1bb356c2e99f.js b/api/search.index/1bb356c2e99f.js
deleted file mode 100644
index e4cf3ee49..000000000
--- a/api/search.index/1bb356c2e99f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("UUMAAL4TvxPAE8ETFBcVFwUASgAAFHAdcR1tTx0VAEYAABQSHRMdbekcbB0zgQOg0AAAHUpmcHOrhKAwAAAYkaAgAAAdrBEBCA==")
\ No newline at end of file
diff --git a/api/search.index/1bb90fb092c2.js b/api/search.index/1bb90fb092c2.js
new file mode 100644
index 000000000..911760c66
--- /dev/null
+++ b/api/search.index/1bb90fb092c2.js
@@ -0,0 +1 @@
+rn_("JQBFAAAGsxxiBhmSGpMaBQHAAAAHQB0FLR1mdAUBwAAAFAUZkRoGih1vcgUARgAABHAcZXgZVwUBh7DwHZMAAbAwGTEAAaBQAAAdbyaAFjowAAABAAAAAAAHABAAAACCDkoRSxFMEcEYvhuiHKMcFQBCAAABzRxpWRvCG/sCZWw=")
\ No newline at end of file
diff --git a/api/search.index/1bbfe05283b0.js b/api/search.index/1bbfe05283b0.js
deleted file mode 100644
index cdb9c757e..000000000
--- a/api/search.index/1bbfe05283b0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAABrA4KuRtlaQUBRAAAB1McB2sdY3PQGwEBAbAAEh4AAXM7MAAAAQAAFAAJACANAACmDgUAjBgBAJQYAQDJGAEA7xgBAI8aAQDNGwEAnhwBAEsDoEAAAB1XoIAAABszY2x0JQBHAAADuBtmsBheG18bFQBCAAAD0xdhHBIdEksDoLAAABxSoGAAABmAY250BQHCAAALxhw0Cx0MHT0dPh1hZQEA0KAwAAAdOqBAAAAZaGkv70/4d6AgAAAOpaAwAAASG7BwHGIAAWXIB8KmqLAwGM0Et6CAAAAaHmScSHErmqBAAAAWq3buFpqqYT6jE8jUX6BgAAAbAVSnSgPiQ7AgGJYAAcDuJU87MAAAAQAAwwEGAEQEAAA7BesALg0AAH8OAABpD9MASxIAAA==")
\ No newline at end of file
diff --git a/api/search.index/1bcb9d2b46e9.js b/api/search.index/1bcb9d2b46e9.js
new file mode 100644
index 000000000..445da74ce
--- /dev/null
+++ b/api/search.index/1bcb9d2b46e9.js
@@ -0,0 +1 @@
+rn_("AQEBoHAAABp6ZjswAAABAABKAAkA8woCAAANAQCXDgAAzBIfANEYAADUGB8ASRoBAEkbAADUHAAARQBBAAAGpB1kiQ2KDRgarxtkHQUBwAAAACsdB2gZc3R7hKEgAAAdXRSgAA==")
\ No newline at end of file
diff --git a/api/search.index/1bf6a0673b03.js b/api/search.index/1bf6a0673b03.js
new file mode 100644
index 000000000..baee89901
--- /dev/null
+++ b/api/search.index/1bf6a0673b03.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHaB0BvRxhbwUBxAAAAqAdAZwdYW8jhQKgAAAAHTNkZgUBxAAABpEdA4Edb3QbAqDgAAAdrGhvNwGGh6AwAAAc4KGAAAAdwaBAAAAdHaBQAAAdNCyIAwUBwAAAB2cdAbwcYW8FAcQAAAKfHQGbHWFvI4UCoAAAAB0xZGYFAcQAAAaQHQOAHW90GwKg4AAAHatobzcBhoegMAAAHN+hgAAAHcCgQAAAHRygUAAAHTIsiANjAISgYAAAGGagkAAAG+YlgAABoQ0AAA==")
\ No newline at end of file
diff --git a/api/search.index/1bfb78b84cbd.js b/api/search.index/1bfb78b84cbd.js
deleted file mode 100644
index 5fa5ec398..000000000
--- a/api/search.index/1bfb78b84cbd.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAACjBwRtQ66E3R6KwKwQBs1AX5laQUBwAAAAa4dRgcYCBgJGAoY5RxkZZFBAADJDMoMgRiCGIMYaxoWGygbTBuoHQUARAAAA4sbbi0SZwUAh6BgAAAaLbBQFrQDarBgGi4AATCZAjowAAABAAAAAAAfABAAAAAwEdETEBfNF9sXhRiGGIcYiBiJGIoYqBgfGSAZIRkiGSMZJBk1GTYZThpQGlEabRtuG5sb4RviG3kcrBzKHKMd")
\ No newline at end of file
diff --git a/api/search.index/1c0d85af4e3d.js b/api/search.index/1c0d85af4e3d.js
deleted file mode 100644
index 1254b39f1..000000000
--- a/api/search.index/1c0d85af4e3d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBEAAAGdRxyUxlUGVUZVhlXGVgZWRkjgwKgYAAAGwRjdCUAQQAAA20Zbt8MLRFTGAUBwAAAAYYNDTgdZXQFAcAAAAskGwOSHGF03wGFsAAaSgMkDGAC")
\ No newline at end of file
diff --git a/api/search.index/1d69410f5fdb.js b/api/search.index/1d69410f5fdb.js
deleted file mode 100644
index 26879d78e..000000000
--- a/api/search.index/1d69410f5fdb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHBh0S1xNnGW95cUQAAKQbpRumG6cb8BvxG/Ib8xtXAADFsGAZZAABoEAAABgsoKAAAB1AAAggGjowAAABAAAAAAAIABAAAAD0CvUK9goADQENAg1AESwSSxgFAEIAABLNHKsdYc4K+wJrdA==")
\ No newline at end of file
diff --git a/api/search.index/1d6ccaa0ecb2.js b/api/search.index/1d6ccaa0ecb2.js
deleted file mode 100644
index f940ff8a6..000000000
--- a/api/search.index/1d6ccaa0ecb2.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHYh0BtxxhbwUBxAAAApodAZYdYW8jhQKgAAAAHS1kZgUBxAAABosdA3sdb3QbAqDgAAAdpmhvNwGGh6AwAAAc2qGAAAAdu6BAAAAdF6BQAAAdLiyIAwUBwAAAB2EdAbYcYW8FAcQAAAKZHQGVHWFvI4UCoAAAAB0rZGYFAcQAAAaKHQN6HW90GwKg4AAAHaVobzcBhoegMAAAHNmhgAAAHbqgQAAAHRagUAAAHSwsiAM7A6CQAAAb4GNmcA==")
\ No newline at end of file
diff --git a/api/search.index/1d7223faf81b.js b/api/search.index/1d7223faf81b.js
deleted file mode 100644
index bebfb7474..000000000
--- a/api/search.index/1d7223faf81b.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBEAAAGuR1kah2qHSMAAqCAAAAdGmNs9ysNAAB6AAEAAQAoCjgDjQJBQQAALhEvEdoWqhtVHVsDoAAAAAkDZWt5")
\ No newline at end of file
diff --git a/api/search.index/1dcda82f9dfb.js b/api/search.index/1dcda82f9dfb.js
new file mode 100644
index 000000000..277a8ff84
--- /dev/null
+++ b/api/search.index/1dcda82f9dfb.js
@@ -0,0 +1 @@
+rn_("BQHAAAAFFRcZ/xgAGWVpBQBLAAAAoxtzPBsFA8AAAFQNEQ4RDxEQEeET4hMm7RbuFuoXJ8sXzBciGRIQDRENY25vcBUARAAAAIkcc+4b7xsTiAKgMAAAG6JmcwUARwAAAIkYc+kXIUsAAFUaVhqhGwUBwAAAAqAdAZwdYW/zAwFw8osZAAB8ASODAqAAAAAdM2RmNQBEAAAMUR1wVhhmHcMdxB0FAEMAABR8Gn0aY+MTBQBEAAAEPRtjJRozAAOgkAAAGz5mcnPy3ggAAPEK/wCFoKAAABs7KCggAYECoRAAAB1RoHAAABmLZmwVAEYAAAhAHXOiHKMc13wAy6DAAAAboLAwDpoAAaEAAAAcxEBPJA0BfQEAAA==")
\ No newline at end of file
diff --git a/api/search.index/1e3c7cebcefc.js b/api/search.index/1e3c7cebcefc.js
new file mode 100644
index 000000000..5e564393c
--- /dev/null
+++ b/api/search.index/1e3c7cebcefc.js
@@ -0,0 +1 @@
+rn_("FQFJAAAHOB0FCR1iZo4blx01AUIAABeZHEcdAIMXZnOxFrIWsxa0FgUARQAABrccYgwZBQHBAAACDRkCCxlidPMAAXT0IREAABIBAQBVBkUBQgAAJF4cXxwsHQWSG2N32xfcF74YvxjLGysCoEAAABoxZWkFAUQAAA+vHRJjGmQaY3JhGAUBwAAAI0YZRxlsHAnjG2FvtwwCiLAwF9oEk6BwAAAaZaAwAAAYwDSYEvWODgAAAQA0ACYJ1AD7A2VpdA==")
\ No newline at end of file
diff --git a/api/search.index/1e497b93051e.js b/api/search.index/1e497b93051e.js
new file mode 100644
index 000000000..9996ee939
--- /dev/null
+++ b/api/search.index/1e497b93051e.js
@@ -0,0 +1 @@
+rn_("9QBAAAAF0xd11wq6DLsMvAy9DL4MvwzADMEMwgzDDMUXxhejG7YbiRwxQwAAfBmRG3Uc2xwFAcEAAAW2GwaUHGZuNQBAAAAENB1wbRtuG5kcRx0FAcAAAAdoHQG9HGFvBQHEAAACoB0BnB1hbyOFAqAAAAAdM2RmBQHEAAAGkR0DgR1vdBsCoOAAAB2saG9nNAGKoFAAABruoDAAABzgoYAAAB3BsEAdGAABoEAAAB0dLpgHOjAAAAEAAAAAAAkAEAAAAKQOpQ6mDvMa9Br8GogczRzvHHIdFQBDAAAOhR1jsBixGEOBA6BAAAAZPLAQF3wAAWFpblcJAImgQAAAHQuggAAAGQewYBiyAAGwIA6HComgMAAAFqwSsQc6MAAAAQAAAAAALAAQAAAA+wiTCpQKlQo6ETESRhKtFvoW/RYWFxcXlhfCF+wX7RcmGKoYrBjLGBMZORpRGjwbQRtZG50bnhuqG6sbrButG8I [...]
\ No newline at end of file
diff --git a/api/search.index/1f1933cc8e92.js b/api/search.index/1f1933cc8e92.js
new file mode 100644
index 000000000..bbe95733f
--- /dev/null
+++ b/api/search.index/1f1933cc8e92.js
@@ -0,0 +1 @@
+rn_("tQBCAAADqhd05grnCugK6QrqCusK7ArtCn0ZIR0nHSodBQBFAAAGtxxiDBkhRAAA5hbnFskbBQHBAAACDRkCCxlidPMAAXT1IREAABIBAQBVBrUEBQHAAABSpBilGKYYpxioGKkYN/Yb9xv4G/kbZXUFAcEAAAY/GwHrF2JvKwKgMAAAHS1hcgUAQwAAGIYdhx13ZBxFAUIAACReHF8cLB0Fkhtjd9sX3Be+GL8YyxsrAqBAAAAaMWVpBQLBAAAU8xr0GhHaF20cFPEaJhtlbHgFAUMAAA+vHRJjGmQaY3JhGAUARAAAAhAZcv0W8wABZgEuEgAA+wJkbgGCA6FQAAAduaAgAAAcvqCAAAAdaWR1dysCoCAAAB0vb3JDBAOgYAAAG5mwcB0wAA1iZXABABcAACFCAABGGUcZbBz7AmN0GwKgkAAAG+NhbwUBwAAANW4abxpxG3kbAR4baXUFAcAAAAN3GwCCGGFzBQH [...]
\ No newline at end of file
diff --git a/api/search.index/1fba933da292.js b/api/search.index/1fba933da292.js
new file mode 100644
index 000000000..186acab96
--- /dev/null
+++ b/api/search.index/1fba933da292.js
@@ -0,0 +1 @@
+rn_("AQABsAASIgABczswAAABAAAUAAkAIg0AAKgOBQCRGAEAmRgBAM4YAQD0GAEAlBoBANMbAQCkHAEAKwKg0AAAG45ociFGAAC2HbcdvB0FAsMAAA6XHQJyHAhLHXR1dyMFAqBgAAAbJ2JwAc0TAAAbAqAwAAAdXWFoNwgAiLBwGl4AkqBAAAAdrqCAAAAbOLBAHGgAAaAwAAAaWxycBDowAAABAAAAAAAQABAAAAA7GDwYPRg+GD8YQBhIGUkZJxpaHGAcIh0jHYIdmB2ZHaUd")
\ No newline at end of file
diff --git a/api/search.index/1fcb517d475d.js b/api/search.index/1fcb517d475d.js
deleted file mode 100644
index 72b29ce06..000000000
--- a/api/search.index/1fcb517d475d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("1QBCAAADAhltPRE+EYEbghuQG5EbaBxpHPgc+RwSHRMdcB1xHRUBRQAAA8UbAIQYbHPlF7gY+wJudBsDoKAAABzFoAAAABoiYWVz")
\ No newline at end of file
diff --git a/api/search.index/1fd320728ae1.js b/api/search.index/1fd320728ae1.js
deleted file mode 100644
index 35b723144..000000000
--- a/api/search.index/1fd320728ae1.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("8UYAABgZGRlxHKMcpBylHKYcpxyoHKkcqhywHLQctRwiHX4dBQBIAAAAYRxzMRsrArBAGHUAAW9yMwEDoGAAAB0HY2ZvOjAAAAEAAAAAAAcAEAAAACkNKg2kDV8YBRkMGQ0Z/Rw=")
\ No newline at end of file
diff --git a/api/search.index/203ee4c569df.js b/api/search.index/203ee4c569df.js
deleted file mode 100644
index f39fc54bf..000000000
--- a/api/search.index/203ee4c569df.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("QUIAAOIXdxh4GLkbUxxlAEMAAAZ+G3LvF/AX8RfyF/MX9Bf1FxsCoPAAAB0zYXIFAEMAAAQfHXV2GfMEAW/y9BYAAAsBZQBIAAAG1BxyhBqFGoYahxqIGokaihrHAQCFoKAAABvXoMAAABvaGCAF8qUMAACGC/sCZWk=")
\ No newline at end of file
diff --git a/api/search.index/205868642f8a.js b/api/search.index/205868642f8a.js
new file mode 100644
index 000000000..d5fb41df2
--- /dev/null
+++ b/api/search.index/205868642f8a.js
@@ -0,0 +1 @@
+rn_("BQHAAAAFXxoEHx1jcwUAQgAAArQdbakdI4cCoIAAAB24YWsjDgKgoAAAHa5hYwH2HAAAS4Q/IAV1j9CgQAAAGYagUAAAGjoYAAP7AmVp")
\ No newline at end of file
diff --git a/api/search.index/205b8345cae4.js b/api/search.index/205b8345cae4.js
new file mode 100644
index 000000000..21c51d6ef
--- /dev/null
+++ b/api/search.index/205b8345cae4.js
@@ -0,0 +1 @@
+rn_("NQBCAAAWth23HWQiHSMdmB2ZHQUBwQAAAfEXApgYYXUrA6BQAAAW+aBAAAAW82JzdrUBQAAAFG4cbxwA3RZtc5QOVxJYElkSWhJbElwScBlxGSAbThtPG98AxaAgAAAblaCQAAAYZgACCgo=")
\ No newline at end of file
diff --git a/api/search.index/205df89e768d.js b/api/search.index/205df89e768d.js
deleted file mode 100644
index 137bda72c..000000000
--- a/api/search.index/205df89e768d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUkAAD8bQBtBG0IbUUMAAL4TvxPAE8ETFBcVFwUASgAAFHAdcR1tTx0VAEYAABQSHRMdbekcbB0zgQOg0AAAHUpmcHNbA6AgAAAdrGVpdTFDAAD2G/cb3Bz6HOMAhLCgGu4AAYAoCDowAAABAAAAAAARABAAAACcDJ0MngyfDKAMoQyiDKMMpAyQDhoRIxHuFnUYdhgQGSYZRB0=")
\ No newline at end of file
diff --git a/api/search.index/2073c7591926.js b/api/search.index/2073c7591926.js
new file mode 100644
index 000000000..c7fa3e89d
--- /dev/null
+++ b/api/search.index/2073c7591926.js
@@ -0,0 +1 @@
+rn_("BQBLAAAGxB1kuh0bAqEwAAAduWFzZQBEAAAJEx1wQRhCGEMYRBhFGEYYRxhVAEAAAAh5G3R4DnkOeg57DjkYOhgFAcsAAASSHQWdHXFz8wgBcDswAAABAAAGAAEAExsGABUATQAABKMdZsAdwR0jAAOgEAAAGieggAAAHPBtc3QBdw4AAFcDAoagcAAAGkug8AAAHSsIqAb03xMAAAEALQMBAFsDoFAAABgFYWVp")
\ No newline at end of file
diff --git a/api/search.index/20f92e24029e.js b/api/search.index/20f92e24029e.js
new file mode 100644
index 000000000..6bce2cf21
--- /dev/null
+++ b/api/search.index/20f92e24029e.js
@@ -0,0 +1 @@
+rn_("BQBKAAAYhh2HHXdkHCcAAIawYBqUAAGgsAAAHMegwAAAHOagQAAAGJ2gwAAAHOcgERk7MAAAAQAABgACABoNAwBeDQIA")
\ No newline at end of file
diff --git a/api/search.index/2106c70a413b.js b/api/search.index/2106c70a413b.js
new file mode 100644
index 000000000..2a728476d
--- /dev/null
+++ b/api/search.index/2106c70a413b.js
@@ -0,0 +1 @@
+rn_("MUkAAEUbRhtHG0gbUUMAAMITwxPEE8UTGBcZFwUASgAAFHYddx1tVR0VAEYAABQYHRkdbe8cch0zgQOg0AAAHVBmcHNbA6AgAAAdsmVpdTFDAAD8G/0b4hwAHeMAhLCgGvMAAYAoCDowAAABAAAAAAARABAAAACeDJ8MoAyhDKIMowykDKUMpgySDh4RJxHyFnoYexgVGSsZSh0=")
\ No newline at end of file
diff --git a/api/search.index/21591a0093ad.js b/api/search.index/21591a0093ad.js
new file mode 100644
index 000000000..22e403da9
--- /dev/null
+++ b/api/search.index/21591a0093ad.js
@@ -0,0 +1 @@
+rn_("BQHDAAAKoR0NsR1ldCMGAqBgAAAc4WJwAYMZAADzBQFjASYdAAAFAsEAAALVEwLWEwMCF2ttdAUBwAAADH8cCXEaY3P7AmVzBQHFAAAJ4hwKCB1jZUsDoCAAABiVoFAAABqFYWVpBQHAAAAEkg4OSR1vcgUCyAAAApsbCU4dCmodYWVzSwOgkAAAGnCgwAAAG5pjbHPnGADJgAMXDRBSoHAAABcBoOAAABx+oFAAABExQgegAzowAAABAAAAAAAHABAAAAAWABcAGAAZAB0AVAFVAVoB")
\ No newline at end of file
diff --git a/api/search.index/216f56cb56be.js b/api/search.index/216f56cb56be.js
new file mode 100644
index 000000000..3e9fbbe80
--- /dev/null
+++ b/api/search.index/216f56cb56be.js
@@ -0,0 +1 @@
+rn_("AQUAOzAAAAEAAKUAAgDIEwEABxajABUAQwAAICUYdRt2G3N3GngaFQBAAAAE5hxi3A7dDvOBAmRt+wJydhUARQAABngcYmkYTRlDAAOgQAAAF96gcAAAGX5lbXcBKA0AAFFBAACDG4QbmBt7HNockh3VAEcAAASjHWY9Gj4aPxpAGkEaQhpDGmEclRyaHJ0cUB3AHcEdGwKgYAAAG8VjdPsDbnN0MUEAAKMOFxjOHCUdIUIAAPsX/Bf9FxUARQAABUodY+wc7RwFAEkAAAaIHWIXHVOFA6AAAAAZemZzd/OCAmRp84ECaXT7A2FlaQ==")
\ No newline at end of file
diff --git a/api/search.index/21a049f86aa3.js b/api/search.index/21a049f86aa3.js
new file mode 100644
index 000000000..ec921dfa6
--- /dev/null
+++ b/api/search.index/21a049f86aa3.js
@@ -0,0 +1 @@
+rn_("ZQBCAAAD2BdhJRImEicSKBIpEioSKxL1AkAAAAMqEQGeDRJ6G6EdYWV1nw6gDqEOog4BF90XXRpeGu8a8BoiG1cbiRvDGzAdPR0rAqBgAAAY0HB0awOgAAAABFtkbnQ=")
\ No newline at end of file
diff --git a/api/search.index/21b5567f28da.js b/api/search.index/21b5567f28da.js
deleted file mode 100644
index f924eb60d..000000000
--- a/api/search.index/21b5567f28da.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAAEjB0Flx1xc/MBAXI7MAAAAQAAIgANAMoWDQBuGAMADxkAAF0ZAQB/GQAASxoAAGUaAwB2GgAAChsBAGkbAQDgGwAAvhwAAA0dAAA=")
\ No newline at end of file
diff --git a/api/search.index/21fa2ceee308.js b/api/search.index/21fa2ceee308.js
deleted file mode 100644
index 7f9528841..000000000
--- a/api/search.index/21fa2ceee308.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("tQFCAAAEOxsDshxmaTkRGhLfFuAW4Rb+FmcYaBglGzobeh17HRUARQAABnIcYmQYSBkVAUAAABkUGRUZKHIYcxhfGW50xxjIGDUARQAAFrAdsR1kHB0dHZIdkx0FAEEAAAa2HWSfHRODAqBAAAAdfG1vawOwMBJQBxphdHcVAEEAAAaeHWSpG14dKwKgEAAAHSVjZQkCoAAAAA2goQAAAB03ZnPrhKDgAAAdMxEBQFFIAABuGG8YcBhxGF0ZXhkFAcgAACjdHN4cIx0Kah10dfsCYXIBBQA7MAAAAQAAhAACAFUYAACPGYMAMUIAADEaMhrxGgMbRwIAhqCAAAAb0aAwAAAdaaBgAAAdTKAwAAAbqAEODAEIEQAAYUgAALEYshizGLQYtRi2GLcYBQBEAAABxxxpvBvzBgFm8v4XAAB7ARsCoLAAABu9ZWlRRwAA/xYAFwEXAhcoGCkYBQHAAABRgg5hGAsdDB09HT4 [...]
\ No newline at end of file
diff --git a/api/search.index/22aaf97d6a87.js b/api/search.index/22aaf97d6a87.js
new file mode 100644
index 000000000..f3cff6a6e
--- /dev/null
+++ b/api/search.index/22aaf97d6a87.js
@@ -0,0 +1 @@
+rn_("BQBAAAAEkxxjxBvzAwFzATsbAAATAAKggAAAHFdmcgGGDgAAKwKgQAAAF3lhZwUBwAAAEhwZBx0ZEB2eHWlvEwADsDAaRAL7sDAaRQABZmlwOjAAAAEAAAAAAA4AEAAAAOIWdxh4GGQZbhpvGnEbeRuhHOMc5BwpHTUdNh1uHSsCoDAAABlnZnP7AmNu")
\ No newline at end of file
diff --git a/api/search.index/2385ec3c9472.js b/api/search.index/2385ec3c9472.js
new file mode 100644
index 000000000..43a9b2cb3
--- /dev/null
+++ b/api/search.index/2385ec3c9472.js
@@ -0,0 +1 @@
+rn_("ZQBEAAAGexxyWBlZGVoZWxlcGV0ZXhkjgwKgYAAAGwljdCUAQQAAA3IZbuEMMRFYGPsCb3MFAcUAAAUIGxEkGxUdZW9rhLAgDNIAAaCgAAAdPhEBAQ==")
\ No newline at end of file
diff --git a/api/search.index/239efa2f0c4a.js b/api/search.index/239efa2f0c4a.js
new file mode 100644
index 000000000..de9a41cb2
--- /dev/null
+++ b/api/search.index/239efa2f0c4a.js
@@ -0,0 +1 @@
+rn_("MUMAANoTvBdnGDgaFQBFAAAIIB1jDBuaHQUAQwAACkYdd1AYBQHAAAAldxh4GGQZAQsZaXVLA7AgGQ0ADrBgGGcB0WJydFuEoEAAABzPoCAAAB07AUBBBQBBAAAUhxuIG20gGvMCAWnyFxkAAAEAFQBBAAAU/hz/HG3IHMkc8wcBafWyGwAANwABAA4BbQBFAEEAAAQkHWbOG/obeB2rHawdEwaEsCAZGQABoGAAAB2aoIAAAB2mAAEHAZAaAAAFAcMAABXFHMYcBiMbbnQFAcAAABOXGH4bG5ocnRxjcSUAQQAAFG4cbxxtIBtOG08bEwSEoKAAAB1goCAAABuwoKAAAB1FACEROjAAAAEAAAAAAAcAEAAAAE8YLxkwGXIacxqgG9IbBB0FAcAAAAESDQETDTI51/4AzKAgAAANFLDgHUEAAQNNOBY7MAAAAQAAMwAWALIMBwDFDAAAIREAADkRAAAzEgEAwBICALU [...]
\ No newline at end of file
diff --git a/api/search.index/23a8adf5621b.js b/api/search.index/23a8adf5621b.js
new file mode 100644
index 000000000..dc6ec24a1
--- /dev/null
+++ b/api/search.index/23a8adf5621b.js
@@ -0,0 +1 @@
+rn_("BQBSAAAGvh1krR0FAFQAAAa/HWSwHfOEAnB0BQBRAAAGux1koh0FAFgAAAbEHWS6HQUAUgAABsIdZLMdBQBPAAAGvR1kqB3zhwJjcAUASAAABmYdZOUbBQBJAAAGqh1keR0ThAOgwAAAHYmggAAAHWVmcHMbAqFAAAAdp2ZsBQBaAAAGwx1ktR37AmFlpzMAyg0Cf1MHwqDAAAAdBaDAAAAdBqAwAAAYaAAbhB0B3RsAAAkCbS9S1HFnsCAXhAABZW4FAEMAAAQlHXV7GfMCAW/y+BYAAAwBZQBDAAAGexxyWBlZGVoZWxlcGV0ZXhnXAgCGoRAAAB17oBAAAA6KoUFAAcYMAAA=")
\ No newline at end of file
diff --git a/api/search.index/24020f0001a8.js b/api/search.index/24020f0001a8.js
deleted file mode 100644
index ad865c37b..000000000
--- a/api/search.index/24020f0001a8.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBCAAAAQhpzqBYFAcAAAAWwGwaOHGZuZQBDAAAFeBlytRa2FrcWuBa5FroWuxafAoagIAAAERGgcAAAHOqw8BzRAAERQUE=")
\ No newline at end of file
diff --git a/api/search.index/244e5cb46dc7.js b/api/search.index/244e5cb46dc7.js
new file mode 100644
index 000000000..1ba7b91c9
--- /dev/null
+++ b/api/search.index/244e5cb46dc7.js
@@ -0,0 +1 @@
+rn_("wUEAAIsO1xfYF2IaIxskGygbLhvMG80b4RsVHRYdFQBCAAAEPh10JhFAEgUCQAAAF8AbwRsXVRtWGwQIG2ZsdK8O+wNlaW8=")
\ No newline at end of file
diff --git a/api/search.index/24540edfab57.js b/api/search.index/24540edfab57.js
new file mode 100644
index 000000000..d3fe79f62
--- /dev/null
+++ b/api/search.index/24540edfab57.js
@@ -0,0 +1 @@
+rn_("QUIAAOYXfBh9GL8bWRxlAEMAAAaEG3L0F/UX9hf3F/gX+Rf6FxsCoPAAAB05YXIFAEMAAAQlHXV7GfMEAW/y+BYAAAwBZQBIAAAG2hxyiRqKGosajBqNGo4ajxrHAQCFoKAAABvdoMAAABvgGCAF8qcMAACJC/sCZWk=")
\ No newline at end of file
diff --git a/api/search.index/245a49d771ea.js b/api/search.index/245a49d771ea.js
new file mode 100644
index 000000000..6d7f96a8a
--- /dev/null
+++ b/api/search.index/245a49d771ea.js
@@ -0,0 +1 @@
+rn_("BQBDAAAGux1koh3zAAFzOjAAAAEAAAAAABUAEAAAAJENkg0dGR4ZdxyCHKkcqhyrHKwcrRyuHK8csBy2HLocuxz6HCgdYh1jHYQdBQHAAAAGPxsB6xdib0UAQQAAFP4c/xxtyBjJGMoYyBzJHAUARQAABMEcZXUaGwKgIAAAGw11eTMChLAgF+IAAaBAAAAbDgIBAzowAAABAAAAAAALABAAAAA7EeAW4RbLF8wXIhmyG9Ab6RvqG/gcZR3xRgAAHRkeGXccqRyqHKscrBytHK4crxywHLYcuhy7HCgdhB0FAEgAAABnHHM2GysCsEAYegABb3IzAgOgYAAAHQ1jZm86MAAAAQAAAAAABwAQAAAAKw0sDaYNZBgKGREZEhkDHXcBAMWgEAAAG4ZAAgBJOjAAAAEAAAAAABcAEAAAAHwOiw7XF9gXcRhiGiMbJBsoGy4bghvMG80b4Rt6HPIc8xwVHRYdGx0fHSAdWR1aHQ==")
\ No newline at end of file
diff --git a/api/search.index/246be2a74ff7.js b/api/search.index/246be2a74ff7.js
deleted file mode 100644
index 40f170d44..000000000
--- a/api/search.index/246be2a74ff7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBIAAATTR1OHWwqGisaMUIAABUYFhgXGBgYBQHAAAAHYR0BthxhbwUBxAAAApkdAZUdYW8jhQKgAAAAHStkZgUBxAAABoodA3odb3QbAqDgAAAdpWhvNwGEh6AwAAAc2aGAAAAduqBAAAAdFqBQAAAdLCyIA1sDoNAAAB2mbG11BQHEAAAGix0Dex1vdO8AhaDAAAAb1qCwAAAbmoFACQ==")
\ No newline at end of file
diff --git a/api/search.index/2472228cd167.js b/api/search.index/2472228cd167.js
deleted file mode 100644
index b1dae3382..000000000
--- a/api/search.index/2472228cd167.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBCAAAAShFzgQ5JEfUARgAACX0dcloYOBk5GToZOxk8GT0ZPhk0G34cfxyAHIEc9Rz2HP8cMUAAAPwM/QwGGRkbAQABoRAAAB12dPLqCAAA1QBbA6DAAAAbhG1ycwUBwAAAARgRAhwbZXkFAEUAAAysHWHfHPFAAACJDtMX1BddGh4bHxsjGykbxhvHG9sbDx0QHRUdUx1UHWsDoKAAABzvYXJzMUgAACMbxhvHGxAdJwABhbBAGYMAAaBQAAAdIYAaNgARsKBAAAAdOFAABzswAAABAAAlABIAuA4IACIRAAA8EgAA/xYDAHUXAADiFwAAKBgBAHcYAQBGGgAAYRoAAE8bAQBYGwUAmRsAALkbAADSGwEAUxwAALwcAAAJHQAABQHAAAAC8xoE8hpkZwUARAAAB0cdcAYX8wABdAGHFwAABQBCAAADxBt39xX/AIVIoY2q6ZoGYAIBAAKgQAAAHOSgoAAAHHhmczo [...]
\ No newline at end of file
diff --git a/api/search.index/249e3c8fc72a.js b/api/search.index/249e3c8fc72a.js
new file mode 100644
index 000000000..5d7a8cb5c
--- /dev/null
+++ b/api/search.index/249e3c8fc72a.js
@@ -0,0 +1 @@
+rn_("dQFCAAABUhsEkhxpczoZOxlVGlYaoRvnG+gb0BwFAEIAAAK0HW2pHSOHAqCAAAAduGFrYwIDoKAAAB2uYWNr8wUWAAABAPAGFQBCAAAH6xxt0RetGCOBAqAwAAAaImJrMwADoAAAAAyoZWlv8mENAAAmAAUBwQAACNcbA64bYXQxQAAAsgpDEU4RRxoBAwA7MAAAAQAAyAABAPMSyAABAAA7MAAAAQAAyQACAPkKAACuDcgAGwKgIAAAHLhkdOcBAIagQAAAG0GgYAAAHXwgIRY6MAAAAQAAAAAAJAAQAAAAVwQJCAoIJg2DDo0OPRFGEUcRTREeEtsTrBbjFuQW5RYCF6oX8hfzF2wYbRhTGVQZbBl3GfcaIRsqG0AbrhvXG+MbnhzpHIAdgR2rhLBQGjMAAaBgAAAb3REABQ==")
\ No newline at end of file
diff --git a/api/search.index/24bd775a5f42.js b/api/search.index/24bd775a5f42.js
new file mode 100644
index 000000000..3c62f6fc4
--- /dev/null
+++ b/api/search.index/24bd775a5f42.js
@@ -0,0 +1 @@
+rn_("BQHAAAASHBkHHRkQHZ4daW8TAAOwMBpEAvuwMBpFAAFmaXA6MAAAAQAAAAAADgAQAAAA4hZ3GHgYZBluGm8acRt5G6Ec4xzkHCkdNR02HW4dI4ICoDAAABlnZnMrAqCgAAAb0WZ0")
\ No newline at end of file
diff --git a/api/search.index/24da8225dd55.js b/api/search.index/24da8225dd55.js
new file mode 100644
index 000000000..f73004517
--- /dev/null
+++ b/api/search.index/24da8225dd55.js
@@ -0,0 +1 @@
+rn_("BQHAAAADNRoFZhttdCsCsHAcYgABYWWHAIOHoNAAAB19oOAAAB1YoBAAABeXoQAAAB2NoNAAAB0ooMAAAB0PLJAG")
\ No newline at end of file
diff --git a/api/search.index/24e1690f7a56.js b/api/search.index/24e1690f7a56.js
deleted file mode 100644
index ab86f88b8..000000000
--- a/api/search.index/24e1690f7a56.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHEAAARdhdIHQTaG2l0JwAAx6AwAAASO7CAGjEAAbBAF5QAAaDQAAAcl7AgGuwANaBgAAAbd4AEoA306AcAAD8J5AVBAQUBwAAAC1ocBBMRbnQVAEgAAAawHWQcHZIdI4ECsFAZQwABZnQFAcAAAAXBHDRtGIIZUhokG2NzEwACoKAAABtOZXTzQwQAAPYAAQAFAcIAAAzFHAKnFmRzBQBCAAAB2hNl1Ar7A2VpcgEAADswAAABAAAXAAUAsAwHAC0YBgD4GgYAlhsAANgcAAAFAEAAAASNHGO+G/MDAXMBNhsAABMCAqCAAAAcUWZyAYQOAADzAgJpcwGODgAAAQADoEAAABrwoNAAABvWsQAc0QABYmN08/sIAACZAQEABQHCAAAAiQ0GWBhlafsCY2RHHwCJoOAAABseoGAAAB28oFAAABESOYEHOjAAAAEAAAAAAA4AEAAAAGAB/giYCpkK1AwDDXsOmRiaGJs [...]
\ No newline at end of file
diff --git a/api/search.index/2591124707a1.js b/api/search.index/2591124707a1.js
deleted file mode 100644
index 9c5bb7801..000000000
--- a/api/search.index/2591124707a1.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBSAAAGuB1kpx0FAFQAAAa5HWSqHfOEAnB0BQBRAAAGtR1knB0FAFgAAAa+HWS0HQUAUgAABrwdZK0dBQBPAAAGtx1koh3zhwJjcAUASAAABmAdZN8bBQBJAAAGpB1kcx0ThAOgwAAAHYOggAAAHV9mcHMbAqFAAAAdoWZsBQBaAAAGvR1krx37AmFlpzMAyimtM27YvqDAAAAc/6DAAAAdAKAwAAAYYwAbhB0B1xsAAAUBwQAABIwdBZcdcXPzAgFyOzAAAAEAACIADQDKFg0AbhgDAA8ZAABdGQEAfxkAAEsaAABlGgMAdhoAAAobAQBpGwEA4BsAAL4cAAANHQAA+wJpeQ==")
\ No newline at end of file
diff --git a/api/search.index/2592cd6dc7d6.js b/api/search.index/2592cd6dc7d6.js
deleted file mode 100644
index 71165bd9c..000000000
--- a/api/search.index/2592cd6dc7d6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAAS8RoDG2sIEVFCAACCDmEYCx0MHT0dPh0VAFAAAAa4HWR5Hacd1QFCAAAJDR0Gfhtwcu8X8BfxF/IX8xf0F/UXPBg9GD4YPxhAGEEYQhj7AmJye4Sg8AAAHTMBQQE=")
\ No newline at end of file
diff --git a/api/search.index/25d838336cea.js b/api/search.index/25d838336cea.js
deleted file mode 100644
index 12b5ab002..000000000
--- a/api/search.index/25d838336cea.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLGAAABch0GlB0IoB1pc3QjhgKgQAAAHP5jbgUATwAABrYdZJ8dBQBJAAAGnh1kXh0FAEwAAAaxHWSTHQUATAAABrAdZJId+wJhafODA21udCsDoGAAAB0aoNAAAB2pbG1uFQFFAAAGcBwIFB1id10YXhj7A2FvdQ==")
\ No newline at end of file
diff --git a/api/search.index/263caa95741c.js b/api/search.index/263caa95741c.js
deleted file mode 100644
index 268b97e34..000000000
--- a/api/search.index/263caa95741c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHYR0BthxhbwUBxAAAApkdAZUdYW8jhQKgAAAAHStkZgUBxAAABoodA3odb3QbAqDgAAAdpWhvNwGDh6AwAAAc2aGAAAAduqBAAAAdFqBQAAAdLCyIAw==")
\ No newline at end of file
diff --git a/api/search.index/2646734469f5.js b/api/search.index/2646734469f5.js
new file mode 100644
index 000000000..8fa1598c2
--- /dev/null
+++ b/api/search.index/2646734469f5.js
@@ -0,0 +1 @@
+rn_("IUMAAEcSxxznHGUEQgAAFpQalRoLxxwM5hwEnRgM5xxmbXJ1dxoNGw0cDR0NXg1fDWAN1QJAAAAEyxgUhxuIGwDmDmZtc6MNpA2lDVIYUxhUGFUYIBppG2obaxsyHTQdOh2/AIWgMAAAF82gEAAAGPgIkAY=")
\ No newline at end of file
diff --git a/api/search.index/271ae48c7e2d.js b/api/search.index/271ae48c7e2d.js
deleted file mode 100644
index e0a88a4cc..000000000
--- a/api/search.index/271ae48c7e2d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("QUIAAM0YzhhrHGkdhB0hQQAAdBzsHO0cBQHAAAAQyBYDGQHJFmRvAYECoNAAAB1VoTAAAB2JYXAFAEYAABDeG/wcco0b8wMBcAH6FgAAGwKgQAAAGVBhb7cBAoawcBtnAAGgwAAAHOs0QRD1nQ0AAAEApwoeAfgA+wJlcw==")
\ No newline at end of file
diff --git a/api/search.index/27eff7aaf869.js b/api/search.index/27eff7aaf869.js
deleted file mode 100644
index ccbb37103..000000000
--- a/api/search.index/27eff7aaf869.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAAFJB1ychsxRwAAMhvRHNIcMx3zAAJmbDswAAABAAAHAAIAOxEAAOgSBgATgQKwcB0KAI5tcwUBwAAAEBcZAR0bOx08HWV0BQHAAAARQhLEHAfLG2xz+wJlbK8AhbAwFusAAaCgAAAa8qBgAAAdOgFJAQ==")
\ No newline at end of file
diff --git a/api/search.index/282b7c6cd905.js b/api/search.index/282b7c6cd905.js
deleted file mode 100644
index df6bb661c..000000000
--- a/api/search.index/282b7c6cd905.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFDAAAFqBsGdh10d9EbmBwFAUMAAAZ6GwZ7G2Jv7RYbAqDgAAAc0GFjKwKwMBJRCB5hZTFBAAAUGhUaFhoXGgEBADswAAABAACEAAIALQ0AAOUOgwDzAAJldfQxDQAAChABACoAAQEAOzAAAAEAAMoAAgAQEQAAqRTJACsCoBAAAA59aXWVAEEAAAQhGGaUF5UX+Rf6F/sX/Bf9FwQZFh0XHQUARAAAEAwYDRhzkRcbAqAgAAATvWJyBQBAAAAGvh1ktB37AmRyBQHAAAA3jRmOGZQb3BsLeRtucjetAIygkAAAGW6xQB2PAAGgYAAAHX2hEAAAHUxmJVL/FWlxuQc7MAAAAQAAzQAEABAJAQDLCgAAzwvJAOMOAAA=")
\ No newline at end of file
diff --git a/api/search.index/283f45587bd0.js b/api/search.index/283f45587bd0.js
deleted file mode 100644
index d7b6c540c..000000000
--- a/api/search.index/283f45587bd0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAASZRiAGXKcDUUCQQAAFScZKBkavxzAHDPtF+4XchndG29zdFgNWQ1aDVsN7RpvAIWgsAAAHTigIAAAHTiwEBcLAUFAICM=")
\ No newline at end of file
diff --git a/api/search.index/287e7f499c73.js b/api/search.index/287e7f499c73.js
new file mode 100644
index 000000000..ca0369961
--- /dev/null
+++ b/api/search.index/287e7f499c73.js
@@ -0,0 +1 @@
+rn_("BQJGAAAhzhv6G3gdBpodCKYdaXN0kBoVAEEAABRuHG8cbU4bTxsTBAKgIAAAG7BpcvcvGQAAAQBCAQEALQEyADIBkwCEsEAYlwLnsJAcxQABFCEAOjAAAAEAAAAAAAgAEAAAACUYSxhMGAQbBRtnG2gbdRt2Gw==")
\ No newline at end of file
diff --git a/api/search.index/2971bb1e5b6b.js b/api/search.index/2971bb1e5b6b.js
deleted file mode 100644
index 6cd98e90a..000000000
--- a/api/search.index/2971bb1e5b6b.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBFAAAB8RxpYBwbArCQHLkAAWVpIUUAAG0abhrMG/OFAnN2BQHAAAAF0xwH3RtmdAUAQwAAET8ZQBlpUBk7A6AgAAAdAGxudQUBwAAAEkgaSRoU0BwxHWl0BQHAAAAvdB2FHYYdJ3Qc7BztHGFyIUMAAAIZXBxdHAUAQQAABm0ddIYcpwMAhqCgAAAdeKBAAAAXkjSQAjowAAABAAAAAAAOABAAAAA9ET4R+xaBG4IbkBuRG2gcaRz4HPkcEh0THXAdcR0BggOhUAAAHbOgIAAAHLiggAAAHWNkdXcrAqAgAAAdKW9yQwQDoGAAABuTsHAdKgANYmVw8/wWAAAdAwEABQBGAAAQ3hv8HHKNG/MCAXD3+hYAAEcCAQAWAwEADQDAAPsCY3R3AQCFoHAAABh+gUAMAXsBAAA=")
\ No newline at end of file
diff --git a/api/search.index/2984894cf809.js b/api/search.index/2984894cf809.js
new file mode 100644
index 000000000..eb3cc8308
--- /dev/null
+++ b/api/search.index/2984894cf809.js
@@ -0,0 +1 @@
+rn_("IUsAAHYZhxqIGjUAQAAAE+8X8BdpxBjFGPoa+xoFAEMAAADuF3MOHWMBA7AQGUQAAWluc/JVGQAAOgQFAcAAABVcG10bAh8bYW8FAEQAAAN1HG7CFwUBwAAABVsbFiIbVxtsbgUBwAAAA48dU0sYTBgEGwUbZxtoG2x1BQLDAAAIdB0CtBwIYR1jdXcjBAKgYAAAG41icAH3FgAAIUcAABsdWR1aHfsCbHT7AmFv9wAAhbAAHX0AEDSAAjswAAABAAAPAAYADAkAALYKAAAxGAAAjBkFAH4aBQCWHAAAe4SgMAAAGJ0QEAY=")
\ No newline at end of file
diff --git a/api/search.index/29a78ee70e2d.js b/api/search.index/29a78ee70e2d.js
new file mode 100644
index 000000000..8fdb57659
--- /dev/null
+++ b/api/search.index/29a78ee70e2d.js
@@ -0,0 +1 @@
+rn_("FQBEAAAD3htsdRndHDFIAABLHU8dYR1pHTFCAAByHIActBy+HAUBwAAADLEdDZcdYWgPB4eggAAAHWuggAAAHXShUAAAHbmgoAAAHaEeABzzgQJwdgUASAAABkwddsgbWwOgIAAAHS9sb3I=")
\ No newline at end of file
diff --git a/api/search.index/29ad336ed8be.js b/api/search.index/29ad336ed8be.js
deleted file mode 100644
index 2a98eb790..000000000
--- a/api/search.index/29ad336ed8be.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLGAAABch0GlB0IoB1pc3QjhgKgQAAAHP5jbgUATwAABrYdZJ8dBQBJAAAGnh1kXh0FAEwAAAaxHWSTHQUATAAABrAdZJId+wJhafOEA21udPsCb3U=")
\ No newline at end of file
diff --git a/api/search.index/29b2e248fb4b.js b/api/search.index/29b2e248fb4b.js
new file mode 100644
index 000000000..eb897a888
--- /dev/null
+++ b/api/search.index/29b2e248fb4b.js
@@ -0,0 +1 @@
+rn_("AQKEoEAAABltoHAAABmFoDAAABjSoJAAABs4AgMCOzAAAAEAANQAAgAwDQAAbQ/TAAUBxAAAAyEbBgUddHYFAUMAABH8GogcA5EbaW4xEvsDaW9y")
\ No newline at end of file
diff --git a/api/search.index/29b4f278574e.js b/api/search.index/29b4f278574e.js
deleted file mode 100644
index 2d8230ab5..000000000
--- a/api/search.index/29b4f278574e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBBAAATzBPNE2bhCr0Wvha/FsAWwRbCFgUBwQAAA2MZVm4YbxhwGHEYXRleGWpwMUIAAGQZZRmVHJYcIUgAAN0c3hwjHTUAQgAAATQdaeIcSx1WHYMdOwOgoAAAHWpwdHUjhAOgEAAAG1SgMAAAHONpc3TzgQJpbisDsGAaMQABoBAAABi7Z3J0+wNhcnU=")
\ No newline at end of file
diff --git a/api/search.index/29f535535c19.js b/api/search.index/29f535535c19.js
new file mode 100644
index 000000000..914d878f7
--- /dev/null
+++ b/api/search.index/29f535535c19.js
@@ -0,0 +1 @@
+rn_("BQHBAAAMshwJHBtjcwUAQwAAAS4dZR0b8wgBbAFXGAAAMUMAAHwafRq1G1ccBQBHAAAMsh1h5RwjAwOgIAAAHVugYAAAG4JydHYB9RwAAPsDaG9yJwQAiKCgAAAbG7DgHV4AAaBwAAAdrqCgAAAaVKCQAAAZcqDQAAAdDBWEBwHjEwAA")
\ No newline at end of file
diff --git a/api/search.index/29f9bc5f214f.js b/api/search.index/29f9bc5f214f.js
new file mode 100644
index 000000000..ff3ed7053
--- /dev/null
+++ b/api/search.index/29f9bc5f214f.js
@@ -0,0 +1 @@
+rn_("IUMAAD0b+xuTHAUBwwAACqEdDbEdZXQjBAKgYAAAHOFicAGDGQAABQFDAAAJ3BwVixuMG2Rz1hcjAAKgYAAAGnlidPI8EQAAJQn7Am50WwOgUAAAHUhhZW8=")
\ No newline at end of file
diff --git a/api/search.index/2a3f65209aea.js b/api/search.index/2a3f65209aea.js
deleted file mode 100644
index 4fd4b9182..000000000
--- a/api/search.index/2a3f65209aea.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("8UYAABgZGRlxHKMcpBylHKYcpxyoHKkcqhywHLQctRwiHX4dBQBIAAAAYRxzMRsrArBAGHUAAW9yMwIDoGAAAB0HY2ZvOjAAAAEAAAAAAAcAEAAAACkNKg2kDV8YBRkMGQ0Z/Rw=")
\ No newline at end of file
diff --git a/api/search.index/2af99fd3ae55.js b/api/search.index/2af99fd3ae55.js
new file mode 100644
index 000000000..381711cbc
--- /dev/null
+++ b/api/search.index/2af99fd3ae55.js
@@ -0,0 +1 @@
+rn_("BQBSAAAGvh1krR0FAFQAAAa/HWSwHfOEAnB0BQBRAAAGux1koh0FAFgAAAbEHWS6HQUAUgAABsIdZLMdBQBPAAAGvR1kqB3zhwJjcAUASAAABmYdZOUbBQBJAAAGqh1keR0ThAOgwAAAHYmggAAAHWVmcHMbAqFAAAAdp2ZsBQBaAAAGwx1ktR37AmFlpzMAyg0Cf1MHwqDAAAAdBaDAAAAdBqAwAAAYaAAbhB0B3RsAAAUBwQAABJIdBZ0dcXPzAgFyOzAAAAEAACIADQDOFg0AcxgDABQZAABiGQEAhBkAAFAaAABqGgMAexoAAA8bAQBvGwEA5hsAAMQcAAATHQAA+wJpeQ==")
\ No newline at end of file
diff --git a/api/search.index/2b03582a1254.js b/api/search.index/2b03582a1254.js
new file mode 100644
index 000000000..703994e3c
--- /dev/null
+++ b/api/search.index/2b03582a1254.js
@@ -0,0 +1 @@
+rn_("BQBBAAAUhxuIG20gGvMCAWnyFxkAAAEAFQBBAAAU/hz/HG3IHMkc8wcBafWyGwAANwABAA4BbQAFAcQAAAEgGwpgHWlu+wNjb3A1AEMAAAE6HWnoHFEdXB2JHROIAqAwAAAc6XN0BQHAAAAK2xwHhRthaQUBwAAABVoaBh8bY2wVAEUAAAaqHWR5HacdE4MDoMAAAB0VoDAAAB1YZm5zZyoAirBgGh4AAaBgAAAaW6EAAAAdFrCAG1AAAaDgAAAdL+S4AzswAAABAAA3AA8AHg0AAGINIgAFGAAAVhgAAPsYAAAmGgAA2hsAAKgcAACxHAAAZh0AAKQdAACqHQAAth0BALsdBADCHQIA")
\ No newline at end of file
diff --git a/api/search.index/2b0cf87ecf5f.js b/api/search.index/2b0cf87ecf5f.js
deleted file mode 100644
index c137cd550..000000000
--- a/api/search.index/2b0cf87ecf5f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAABE+Rf6F/sX/Bf9F3L6CBUAQwAAICAYbxtwG3NyGnMaFQFAAAAE4BwLxRxibdoO2w5rhLBAEhUGX6AgAAAWpwwQAjsDoMAAAB01ZXN0")
\ No newline at end of file
diff --git a/api/search.index/2b23af8eb3c1.js b/api/search.index/2b23af8eb3c1.js
new file mode 100644
index 000000000..a06d51719
--- /dev/null
+++ b/api/search.index/2b23af8eb3c1.js
@@ -0,0 +1 @@
+rn_("AQADoEAAAB0ksEAblgABoAAAABgvZm1zOzAAAAEAABoADABJEQAAxhIAAMwWAACtFw4A/BgAAP4YAAAIGQAAPhsAAM4bAAD6GwAAeB0AAKsdAQA=")
\ No newline at end of file
diff --git a/api/search.index/2b4634a21466.js b/api/search.index/2b4634a21466.js
deleted file mode 100644
index b9c02cbc2..000000000
--- a/api/search.index/2b4634a21466.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUMAAOAXYRllHRUAQgAAAS4daQ4NDw0hRwAAxxfIFx0ZJQBGAAABORtp6RbqFuYXAQYAOzAAAAEAAK8AAgCRGlcA+RtXACUASwAABJ0dZkoduh27HfsCcXIFAcMAAFAJEQoRCxEMEd0T3hMwPxtAG0EbQhthZfcDAIegUAAAF88U4Aw6MAAAAQAAAAAAHwAQAAAA1Qq4DLkMugy7DLwMvQy+DL8MwAzBDOIO2RbBF8IX9hf3F/gXDBgNGCoYQxhEGGcbaBudG7AbvxuDHJMcQR2sHQ==")
\ No newline at end of file
diff --git a/api/search.index/2b49c3d239e0.js b/api/search.index/2b49c3d239e0.js
new file mode 100644
index 000000000..234062dbd
--- /dev/null
+++ b/api/search.index/2b49c3d239e0.js
@@ -0,0 +1 @@
+rn_("ZQBEAAAGmBtyHhgfGCAYIRgiGCMYJBgBAAFITcsE69Vw9KAKAABODTsAbQAFAcAAAAdnHQG8HGFvBQBCAAAz/BYVGBYYYB1wlBwFAcQAAAKfHQGbHWFvI4QCoAAAAB0xZGbzAAFl8toKAAAvEgUBwAAADasdBPIabW4FAcQAAAaQHQOAHW90awOg0AAAHYVhaG9nbACMoIAAABr8oDAAABzfsIAbJAHxoYAAAB3AoEAAAB0csIAdhgABbpgXOzAAAAEAAOoAFABPBAAA2wcMANcOAQDzEsgA/RUAAOgXAACwGAEAchkAAHwZAABUGgAA7hoAABobAAByGwAAkRsAAMAbAQBkHAAAdRwAANscAAAOHQAAah0AABMAAnVEJyq9AWVwOjAAAAEAAAAAAAsAEAAAAPIKFxGkGKUYphinGKgYqRiLG4wb1hw3HQ==")
\ No newline at end of file
diff --git a/api/search.index/2be6958353b1.js b/api/search.index/2be6958353b1.js
deleted file mode 100644
index 949c305c6..000000000
--- a/api/search.index/2be6958353b1.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAADcRsAfRhhcwUBwwAAFz0dPh0SnhyfHGRzUwEDoFAAABvPZm1u8g0XAACtAAUBwAAAA0MaAAwXYXMFAcAAAAQMG1A2GDcYOBg5GDoYOxhpcwUBwwAAFwsdDB0SzRvOG2Rz8wCEIDAEOjAAAAEAAAAAAAcAEAAAADoRwxLEEsUSxhLHEuocoB0=")
\ No newline at end of file
diff --git a/api/search.index/2beab6177c34.js b/api/search.index/2beab6177c34.js
deleted file mode 100644
index 027c13e6e..000000000
--- a/api/search.index/2beab6177c34.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBEAAAWtBy1HGYMGQ0ZKwOgYAAAGPmgMAAAGMxlb3IFAcEAAALuFgzOHGZuBQHEAAAB9xgFeBtpc/sCbG8FAcUAAAJOGgMVG2tuGwKgsAAAG9VjdTcCAIawABbrAAGgMAAAHGugcAAAGPgVAgY6MAAAAQAAAAAADwAQAAAA4AjhCOII4wgSCbIKswq2DtcO2A7ZDuIW4xaYGMMbYRw=")
\ No newline at end of file
diff --git a/api/search.index/2c7be0cabb42.js b/api/search.index/2c7be0cabb42.js
new file mode 100644
index 000000000..a480763f8
--- /dev/null
+++ b/api/search.index/2c7be0cabb42.js
@@ -0,0 +1 @@
+rn_("FQBGAAAGpB1krxtkHTUAQAAAE+8X8BdpxBjFGPoa+xoFAEMAAADuF3MOHWMAA7AQGUQAAWluc/JVGQAAOgQVAEQAAAa/HWRwHbAdIwMCoIAAAB0gY2z3LQ0AAHoAAQABACoKOQOOAgUCwgAAApsbCU4dCmodYWVzKwKgEAAAGFtpbysCoGAAABoYZXLVAEIAAASjHWY9Gj4aPxpAGkEaQhpDGmEclRyaHJ0cUB3AHcEdZwcAiLBwGkkAAaBwAAAaYqEQAAAdfBMxBfbsCAAA1QBYEAEAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/2c9c5aa8abd1.js b/api/search.index/2c9c5aa8abd1.js
new file mode 100644
index 000000000..54a4cf7a4
--- /dev/null
+++ b/api/search.index/2c9c5aa8abd1.js
@@ -0,0 +1 @@
+rn_("ZQJGAAAhhBiFGEwaAh8ZEiAZIRlpbHITF00YThj/GAAZvxzAHLUBQAAANiUbsxweHYgdBUodYmPLExoXGxeBF4IXBhmSGpMaMRvsHO0cFx0jAgKwIBerAAFucgEbEQAAFQBMAAAA7RtznxvCHPsCZWkFAFEAAAa7HWSiHQUAWAAABsQdZLod84cCcnZRRQAAwRbCFsMWxBbFFsYWJQFHAAAW7BvSHAKKGWJy5xf3GHwbBQJBAAAUhh2HHQJ8HQbPG3BydsobUUMAADkSOhI7EjwSPRI+EvsCbnQFAEQAAAdxHXPWGyOCA7BwG2QAAaBgAAAbBm10dSsCoLAAABs5b3IFAcAAAAZ7GxbmF78baHL3FwDKsFAT3wABJNqCJd1VAEm0HDswAAABAAA+AAIA9AM7AKsNAgA=")
\ No newline at end of file
diff --git a/api/search.index/2cb9208e0fba.js b/api/search.index/2cb9208e0fba.js
deleted file mode 100644
index 663c6f73f..000000000
--- a/api/search.index/2cb9208e0fba.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBFAAAGsRxiBxkFAcEAAAIIGQIGGWJ08wABdPQdEQAAEgEBAFQGRQFCAAAkWBxZHCYdBYwbY3fXF9gXuRi6GMUbKwKgQAAAGixlaQUBRAAAD6kdEl4aXxpjclwYBQHAAAAjQRlCGWYcCd0bYW+3DACIsDAX1gSRoHAAABpgoDAAABi7NJgS9YwOAAABADQAJAnTAA==")
\ No newline at end of file
diff --git a/api/search.index/2cfe4f3215bb.js b/api/search.index/2cfe4f3215bb.js
deleted file mode 100644
index 5db5cf017..000000000
--- a/api/search.index/2cfe4f3215bb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBCAAAS7xjwGHNLEhUAQAAAFDgb9RtjIBpSG/MBAXPzmA4AAAEAQQ4FAcAAAAdiHQG3HGFvBQHEAAACmh0Blh1hbyOFAqAAAAAdLWRmBQHEAAAGix0Dex1vdBsCoOAAAB2maG83AgGIoDAAABzaoYAAAB27sEAdEgABoEAAAB0XoFAAAB0uLJgD8ukcAACDACMChKBAAAAdBaAgAAAZC6AAAAAbnRABAzowAAABAAAAAAAIABAAAAD2FvkWIRilGMYYNxuXG5gbHh37AmVs+wJpcg==")
\ No newline at end of file
diff --git a/api/search.index/2d244c815917.js b/api/search.index/2d244c815917.js
deleted file mode 100644
index 3bc60db83..000000000
--- a/api/search.index/2d244c815917.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAAGfh1m/RzzAwFzAU4SAAA1AEAAABPqF+sXab8YwBj1GvYaBQBDAAAA6RdzCB1jAgOwEBk/AAFpbnPyUBkAADkEBQHAAAAHYR0BthxhbwUBxAAAApkdAZUdYW8jhQKgAAAAHStkZgUBxAAABoodA3odb3QbAqDgAAAdpWhvNwGDh6AwAAAc2aGAAAAduqBAAAAdFqBQAAAdLCyIAwUASQAABhgdYiwbE4ICsFAZWwABZndLA6CAAAAYVqBAAAAdGmFlaQUAQQAAAicRZeIKGwKwQB0GAEZjdAUBwAAAEBMNFA0R3A6VG25yGwOgkAAAHUiwoBtsAfhhZXPXBwDHsGAYjAABAEwKDPNoBAAAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/2d72559e761d.js b/api/search.index/2d72559e761d.js
deleted file mode 100644
index d20f0a0f4..000000000
--- a/api/search.index/2d72559e761d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("tQJAAAASEBdOGhPkFxUbUEYYRxj/GgAbYRtiG2tucxUYFhgXGBgYdxp4Gjgbrxv1G1EcjRwAHQEDADswAAABAACEAAIAVRgAAI8ZgwDLhLBAGAQAATs+L8fVPgoBBA==")
\ No newline at end of file
diff --git a/api/search.index/2db0bb93d0ce.js b/api/search.index/2db0bb93d0ce.js
deleted file mode 100644
index c5fcc953c..000000000
--- a/api/search.index/2db0bb93d0ce.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBFAAAGbhxiWxgFAEcAABZcHV0dZm0cE4MCoDAAABpccHMbAqBwAAAbw2FlCQKhAAAAHUegsAAAHQdhb0sDoEAAABxSoKAAABySY3F0BQBJAAAGRh12whsFAcAAAAYgHQFVHDNxBQHAAAACiRsE6Bxpb0cChIagMAAAHJCgIAAAHFSgcAAAHNegMAAAHJHAiAMjgQKgYAAAG8BjdBcPAIigkAAAG8Gg8AAAHTihQAAAHW8MkRYBkQ0AACMAAqBAAAAdnWZnOjAAAAEAAAAAAA0AEAAAADgaORo6GjsaPBo9Gj4aWxyPHJQclxxKHbodux0=")
\ No newline at end of file
diff --git a/api/search.index/2ddbac3d3735.js b/api/search.index/2ddbac3d3735.js
deleted file mode 100644
index 3d118e005..000000000
--- a/api/search.index/2ddbac3d3735.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBCAAADHhthshxlAEAAAAZZGGLWCtcKig2LDYwNjQ2ODQEAADswAAABAACDAAEAcxWDACsCoEAAABhlZW+RRAAAsRuyG7MbtBu1G7Ybtxu/HMAcNh1bA6CAAAAdf2JzdDFCAADYE9kTCRkKGfMAAWU7MAAAAQAAzAADAPcKAACsDcgAvxICAPuECGAE")
\ No newline at end of file
diff --git a/api/search.index/2e4de5247e8e.js b/api/search.index/2e4de5247e8e.js
deleted file mode 100644
index 43e475ab4..000000000
--- a/api/search.index/2e4de5247e8e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAACLoxykHKUcphynHKgcqRyqHCIdCHgcb3kxRAAATRhOGE8YUBgFAcAAAAZMGgPEF3J1zwHFoQAAAB1DsGAZawABBAEwAg==")
\ No newline at end of file
diff --git a/api/search.index/2e93c38986a6.js b/api/search.index/2e93c38986a6.js
deleted file mode 100644
index 4d3f495ce..000000000
--- a/api/search.index/2e93c38986a6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBRAAAGvR1krx0hRAAAdBlkHMYcUwQDoMAAAB2IZWZ3AcEbAAAlAEUAAAatHGIBGY0ajhoFAcAAAAc6HQUnHWZ0BQHAAAAUABmMGgaEHW9yBQBGAAAEahxlcxlXBQGHsPAdjQABsDAZLAABoFAAAB1pJoAWOjAAAAEAAAAAAAcAEAAAAIAORhFHEUgRvBi4G5wcnRwVAEIAAAHHHGlTG7wb+wJlbFsDoIAAAB1XaXJ1")
\ No newline at end of file
diff --git a/api/search.index/2ecfe241a9a4.js b/api/search.index/2ecfe241a9a4.js
deleted file mode 100644
index c70152b3f..000000000
--- a/api/search.index/2ecfe241a9a4.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBIAAAGuR1kah2qHSsCoHAAABoTZW0bA6BgAAAbhKCgAAAbTW1wcjFDAABEGkUaQxvOHAUBwAAAAgEdCZgdaW8TBwKgMAAAHTlmafebHAAAQgABAEUADAABADgA+wJhchUBQgAABzIdBQMdYmaIG5EdIUUAAHQdhR2GHSUAQAAAA5ocaXYcdxzuHCFCAABiGmMaBB0xQQAAYxtkG2UbNB0FAcAAABVzHGcdApkcdXn3AAGFgA2SABABAgEHOjAAAAEAAAAAAAwAEAAAAGYYSRlKGUsZTBlNGQ0bnBt9HOIcSx1WHYMd+wNlbG8FAEQAAARpGW+JFwUBwAAAAOwXC8kcbnAbAqAgAAAYk2F1BQBCAAAGvB1krR01AEEAABDqF+sXc4cciByJHIocIUMAACUZZRx/HfsCdHoFAEYAAAUkHXJyGzFHAAAyG9Ec0hwzHfMDAmZsOzAAAAEAAAcAAgA7EQAA6BIGAAUBQQA [...]
\ No newline at end of file
diff --git a/api/search.index/2f1d556749d3.js b/api/search.index/2f1d556749d3.js
new file mode 100644
index 000000000..72dbe68a5
--- /dev/null
+++ b/api/search.index/2f1d556749d3.js
@@ -0,0 +1 @@
+rn_("IUEAAHoc8hzzHAUBwAAAEMwWCBkBzRZkbwGBAqDQAAAdW6EwAAAdj2FwpwEChqBQAAAZVbBwG20AAaDAAAAc8TRBEPWfDQAAAQCqCh4B+AAbArAgGNMEnGVz")
\ No newline at end of file
diff --git a/api/search.index/2fe854efe1aa.js b/api/search.index/2fe854efe1aa.js
deleted file mode 100644
index 893e0435e..000000000
--- a/api/search.index/2fe854efe1aa.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("JQBCAAAQxxjIGHPSDCcZKBklAUAAAAXcFwXdF3J34wrVDNYMGwKgAAAADQNueAUBwAAAClccEn4OMh1jcvsDZWlz")
\ No newline at end of file
diff --git a/api/search.index/300563a01323.js b/api/search.index/300563a01323.js
new file mode 100644
index 000000000..d474a3884
--- /dev/null
+++ b/api/search.index/300563a01323.js
@@ -0,0 +1 @@
+rn_("BQBFAAAGdxxmZBgFAEIAAAa7HWSiHfsCaXQVAUYAAAZ2HAgaHWJ3YhhjGPMAAmNzOjAAAAEAAAAAABsAEAAAAN8K4ArPDNAM0QyRDZINHRkeGTUadxyCHKkcqhyrHKwcrRyuHK8csBy2HLocuxz6HCgdYh1jHYQd")
\ No newline at end of file
diff --git a/api/search.index/3021f59a3b4e.js b/api/search.index/3021f59a3b4e.js
deleted file mode 100644
index 0a2ee68cd..000000000
--- a/api/search.index/3021f59a3b4e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBEAAAD2BtscBnXHCOBAmN2wys34HB2CQBbA6AgAAAdKQBvcg==")
\ No newline at end of file
diff --git a/api/search.index/308d9af3018e.js b/api/search.index/308d9af3018e.js
deleted file mode 100644
index db5178227..000000000
--- a/api/search.index/308d9af3018e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAAFJB1ychsxRwAAMhvRHNIcMx31AEYAAAl9HXJaGDgZORk6GTsZPBk9GT4ZNBt+HH8cgByBHPUc9hz/HAUBwAAAARgRAhwbZXljAAOwYByrAPlkdHb3ehcAAAEAAQCEAYwB5wIuAAUBwAAAUoUYhhiHGIgYiRiKGFSHGYgZiRmKGYsZjBlrdgUASwAAGIAdgR13Xhz7A2xwdHMAhKAwAAATxiFIADswAAABAAANAAUAVQQAAAQIAwAREQAAOxEAAOgSBgA=")
\ No newline at end of file
diff --git a/api/search.index/30927de4daab.js b/api/search.index/30927de4daab.js
new file mode 100644
index 000000000..e32024561
--- /dev/null
+++ b/api/search.index/30927de4daab.js
@@ -0,0 +1 @@
+rn_("BQHAAAAGARkH5htlb/UAQgAAEnoboR11nw6gDqEOog4BF90XXRpeGu8a8BoiG1cbiRvDGzAdPR0bAqAAAAAcvWlzFQFDAAAGbR0CCh1icqIbgxwFAEEAABR2HXcdbVUdJQBEAAAAiRxz7hvvG8MccwQEoKAAAB2PZmlzdgFoHQAAE4ICsCAYsgABaW77A2Fvcg==")
\ No newline at end of file
diff --git a/api/search.index/30d1705ddff3.js b/api/search.index/30d1705ddff3.js
new file mode 100644
index 000000000..3bf796450
--- /dev/null
+++ b/api/search.index/30d1705ddff3.js
@@ -0,0 +1 @@
+rn_("BQHBAAAFthsGlBxmbjUAQAAABDQdcG0bbhuZHEcdBQHAAAAHaB0BvRxhbwUBxAAAAqAdAZwdYW8jhQKgAAAAHTNkZgUBxAAABpEdA4Edb3QbAqDgAAAdrGhvZzQAiqBQAAAa7qAwAAAc4KGAAAAdwbBAHRgAAaBAAAAdHS6YBzowAAABAAAAAAAJABAAAACkDqUOpg7zGvQa/BqIHM0c7xxyHQ==")
\ No newline at end of file
diff --git a/api/search.index/310de1c39b04.js b/api/search.index/310de1c39b04.js
new file mode 100644
index 000000000..353508931
--- /dev/null
+++ b/api/search.index/310de1c39b04.js
@@ -0,0 +1 @@
+rn_("BQHBAAAI1xsDrhthdDFAAACyCkMRThFHGgUAUgAABr4dZK0dBQBUAAAGvx1ksB3zhAJwdAUAUQAABrsdZKIdBQBYAAAGxB1kuh0FAFIAAAbCHWSzHQUATwAABr0dZKgd84cCY3AFAEgAAAZmHWTlGwUASQAABqodZHkdE4QDoMAAAB2JoIAAAB1lZnBzGwKhQAAAHadmbAUAWgAABsMdZLUd+wJhZaczAMoNAn9TB8KgwAAAHQWgwAAAHQagMAAAGGgAG4QdAd0bAAAFAcEAAASSHQWdHXFz8wIBcjswAAABAAAiAA0AzhYNAHMYAwAUGQAAYhkBAIQZAABQGgAAahoDAHsaAAAPGwEAbxsBAOYbAADEHAAAEx0AAPsCaXkFAEQAABBIGEkYc8EXBQHBAAASJhFAEgEuG2lv+wNhYnQVAEYAABa6HLscZhEZEhkFAE8AAAaEHWYDHWMBA6BQAAAcXGxycwENHQAAEwA [...]
\ No newline at end of file
diff --git a/api/search.index/3143dbad4788.js b/api/search.index/3143dbad4788.js
deleted file mode 100644
index 3fabcb836..000000000
--- a/api/search.index/3143dbad4788.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAAEjRxjvhvzAwFzATYbAAATAAKggAAAHFFmcgGEDgAAKwKgQAAAF3VhZwUBwAAAEhcZAR0ZCh2YHWlvEwADsDAaPwL6sDAaQAABZmlwOjAAAAEAAAAAAA4AEAAAAN4WchhzGF8ZaRpqGmsbcxubHN0c3hwjHS8dMB1oHSsCoDAAABliZnP7AmNu")
\ No newline at end of file
diff --git a/api/search.index/315a018e0048.js b/api/search.index/315a018e0048.js
deleted file mode 100644
index 5aad813a8..000000000
--- a/api/search.index/315a018e0048.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAACkBgFgBphZQUBwQAAAo8YBX8aYWVrA6AAAAAOmzEyM/UAQAAABc8XddUKuAy5DLoMuwy8DL0Mvgy/DMAMwQzBF8IXnRuwG4McBQLBAAAQhQ4LGRCcDnUbAxsdZm5zMUMAAHcZixtvHNUcBQHBAAAFsBsGjhxmbjUAQAAABC4dcGcbaBuTHEEdBQHAAAAHYh0BtxxhbwUBxAAAApodAZYdYW8jhQKgAAAAHS1kZgUBxAAABosdA3sdb3QbAqDgAAAdpmhvZzQBiqBQAAAa6aAwAAAc2qGAAAAdu7BAHRIAAaBAAAAdFy6YBzowAAABAAAAAAAJABAAAACiDqMOpA7uGu8a9xqCHMcc6RxsHQEAArBAHGoAUaAgAAAdBWVyOjAAAAEAAAAAADYAEAAAADINMw00DTUNNg03DTgNOQ06DTsNPA09DT4NPw1ADUENQg1DDUQNRQ1GDeEXARgCGAMYWRhrGP4Y/xh [...]
\ No newline at end of file
diff --git a/api/search.index/31a79a725787.js b/api/search.index/31a79a725787.js
new file mode 100644
index 000000000..f5a090725
--- /dev/null
+++ b/api/search.index/31a79a725787.js
@@ -0,0 +1 @@
+rn_("dQBAAAAH0BtvwBYoGikaKhorGiwaLRouGgUBwQAABNocFSwbtRxxcwUBywAABJIdBZ0dcXNhRQAA/Rr+Gv8aABsBGwIbAxsFAFEAAAbEHWS6HWcOAIigwAAAHN6wQBkOAAGgcAAAGysZoQM7MAAAAQAAJwALACkNAAASEQAAIxEBAEURAAA1EgMAthgGADMZBgCJGgYAExsGAEIbAABQGwEA")
\ No newline at end of file
diff --git a/api/search.index/31f0f1e19cd1.js b/api/search.index/31f0f1e19cd1.js
deleted file mode 100644
index 300ad6813..000000000
--- a/api/search.index/31f0f1e19cd1.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAAI0RsDqBthdDFAAACwCj8RShFCGgUAUgAABrgdZKcdBQBUAAAGuR1kqh3zhAJwdAUAUQAABrUdZJwdBQBYAAAGvh1ktB0FAFIAAAa8HWStHQUATwAABrcdZKId84cCY3AFAEgAAAZgHWTfGwUASQAABqQdZHMdE4QDoMAAAB2DoIAAAB1fZnBzGwKhQAAAHaFmbAUAWgAABr0dZK8d+wJhZaczAMoprTNu2L6gwAAAHP+gwAAAHQCgMAAAGGMAG4QdAdcbAAAFAcEAAASMHQWXHXFz8wIBcjswAAABAAAiAA0AyhYNAG4YAwAPGQAAXRkBAH8ZAABLGgAAZRoDAHYaAAAKGwEAaRsBAOAbAAC+HAAADR0AAPsCaXkFAEQAABBDGEQYc70XBQHBAAASIhE8EgEpG2lv+wNhYnQVAEYAABa0HLUcZgwZDRkFAE8AAAZ+HWb9HGMBA6BQAAAcVmxycwEHHQAAEwA [...]
\ No newline at end of file
diff --git a/api/search.index/31f51c3ddad0.js b/api/search.index/31f51c3ddad0.js
new file mode 100644
index 000000000..e8f9ec21a
--- /dev/null
+++ b/api/search.index/31f51c3ddad0.js
@@ -0,0 +1 @@
+rn_("BQHBAAAC8hYM1BxmbgUBxAAAAfwYBX4baXP7AmxvBQHFAAACUxoDGhtrbhsCoLAAABvbY3UzAISgcAAAGP2gcAAAGP4FAAb14ggAAAEAAQABAC8AKwKhcAAAHcFhcw==")
\ No newline at end of file
diff --git a/api/search.index/31fc627b6c2e.js b/api/search.index/31fc627b6c2e.js
deleted file mode 100644
index 7b812421f..000000000
--- a/api/search.index/31fc627b6c2e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAADMBoFYBttdCsCsHAcXAABYWWHAIOHoNAAAB13oOAAAB1SoBAAABeToQAAAB2HoNAAAB0ioMAAAB0JLJAG")
\ No newline at end of file
diff --git a/api/search.index/31fd4facacba.js b/api/search.index/31fd4facacba.js
new file mode 100644
index 000000000..eda8ad842
--- /dev/null
+++ b/api/search.index/31fd4facacba.js
@@ -0,0 +1 @@
+rn_("BQBEAAAHTR1wChcFAcAAABIcGQcdGRAdnh1pbxMAA7AwGkQC+7AwGkUAAWZpcDowAAABAAAAAAAOABAAAADiFncYeBhkGW4abxpxG3kboRzjHOQcKR01HTYdbh1jAAOgMAAAGWdmc3QBixcAAA==")
\ No newline at end of file
diff --git a/api/search.index/320c427d4e00.js b/api/search.index/320c427d4e00.js
new file mode 100644
index 000000000..47298ad8e
--- /dev/null
+++ b/api/search.index/320c427d4e00.js
@@ -0,0 +1 @@
+rn_("FQFDAAAHOB0FCR1iZo4blx0FAEYAAAUqHXJ4GzFHAAA3G9cc2Bw5HfMDAmZsOzAAAAEAAAcAAgA/EQAA7BIGACUARQAABdUcYRIXvxfAF/sDYWZw")
\ No newline at end of file
diff --git a/api/search.index/321615efe1c8.js b/api/search.index/321615efe1c8.js
new file mode 100644
index 000000000..65ae491e3
--- /dev/null
+++ b/api/search.index/321615efe1c8.js
@@ -0,0 +1 @@
+rn_("BQHAAAAB9hiStxu4G7kbuhu7G7wbvRvFHMYcPB1pdAUBQwAABm0dAgodYnKDHCOIAqBAAAAcw2ZzBQBEAAAAoxtzPBvzAwJmcPQJGAAAAQCJAHMCm4SgQAAAFvmgUAAAGnkAQEk=")
\ No newline at end of file
diff --git a/api/search.index/321d16db4c74.js b/api/search.index/321d16db4c74.js
new file mode 100644
index 000000000..c06fdbecb
--- /dev/null
+++ b/api/search.index/321d16db4c74.js
@@ -0,0 +1 @@
+rn_("BQBGAAAQ5BsCHXKTG0MBhKEgAAAdc6AwAAAbxqCAAAAahgiQAjowAAABAAAAAAAKABAAAADqCC0JLgn+FqsYRhlHGV4cXxxsHCwd")
\ No newline at end of file
diff --git a/api/search.index/322f88e34430.js b/api/search.index/322f88e34430.js
new file mode 100644
index 000000000..27bc06412
--- /dev/null
+++ b/api/search.index/322f88e34430.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHUh0ibBhtGEAbb3kjAgKwYBppAiFsdDswAAABAAAGAAMALhEBAEsSAwALGAAAIwECoGAAAB2/ZGn3ngoAAF8ScwAjAAEAGwABAAUBwAAAA3cbAIIYYXMFAcMAABdDHUQdEqQcpRxkc1MBA6BQAAAb1WZtbvIRFwAArQAFAcAAAANIGgAQF2FzBQHAAAAEERtQOxg8GD0YPhg/GEAYaXMFAcMAABcRHRIdEtMb1Btkc/MEhCAwBDowAAABAAAAAAAHABAAAAA+EccSyBLJEsoSyxLwHKYdBQBAAAAGvB1kpR0rAqBAAAAXvWlzBQHDAAAXaBxpHBLOGM8YaHO3AACFoEAAAB2CsDAOlgntIFCCOjAAAAEAAAAAAAcAEAAAAFYECAiEDmYYER0SHUMdRB1lBEEAABaUGpUaC8ccDOYcBJ0YDOccZm1ydXcaDRsNHA0dDV4NXw1gDXuEoBAAABEZEYEA")
\ No newline at end of file
diff --git a/api/search.index/326b679118d4.js b/api/search.index/326b679118d4.js
new file mode 100644
index 000000000..e52b4a343
--- /dev/null
+++ b/api/search.index/326b679118d4.js
@@ -0,0 +1 @@
+rn_("FQFIAAAHOB0FCR1iZo4blx0xSgAAqhurG6wbrRsFAcIAAFKKGIsYjBiNGI4YjxhUjBmNGY4ZjxmQGZEZa3ZRSgAApBulG6YbpxuoG6kb44GEsEAXFgABIBgC+wJldA==")
\ No newline at end of file
diff --git a/api/search.index/32cb9c69cae0.js b/api/search.index/32cb9c69cae0.js
deleted file mode 100644
index fc3857412..000000000
--- a/api/search.index/32cb9c69cae0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBGAAAGnh1kqRteHdUAQgAABJ0dZjgaORo6GjsaPBo9Gj4aWxyPHJQclxxKHbodux2TAISgMAAAGFagcAAAGl0SAQH0FBoAAAEAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/33167cfe0155.js b/api/search.index/33167cfe0155.js
new file mode 100644
index 000000000..bb8c30a57
--- /dev/null
+++ b/api/search.index/33167cfe0155.js
@@ -0,0 +1 @@
+rn_("AQEAOzAAAAEAAMgAAQDkE8gAMUIAAJIZkxmaG+Ib+wJvdfMAAW07MAAAAQAA0QAEAF4BAADfCAAA+wrOALAOAAA=")
\ No newline at end of file
diff --git a/api/search.index/3322cd0f9ce2.js b/api/search.index/3322cd0f9ce2.js
new file mode 100644
index 000000000..03a012d02
--- /dev/null
+++ b/api/search.index/3322cd0f9ce2.js
@@ -0,0 +1 @@
+rn_("FQBHAAAGpB1krxtkHSsCsBANJwplbG21AUEAAAd/GQYfHWF2shizGGkZahkzGjQaXBtdG5scnBxFHUYdhQFEAAAHtRxgKBopGioaKxosGi0aLhpyc7YYtxi4GLkYuhi7GLwYUBtRGxMBArCAHYYAAXN38+gXAAAyA0oBGwKwAArhC9ZtbvsDYWV1")
\ No newline at end of file
diff --git a/api/search.index/3325fe753b34.js b/api/search.index/3325fe753b34.js
deleted file mode 100644
index 367323bdb..000000000
--- a/api/search.index/3325fe753b34.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAIGh1jBxuUHQUBwAAAAxYZBMkcYW/zAAJ0dfc1EQAAhwEBAAEAvgYBAIgBVQBAAAAFLRtlBBcFFxQZFRkqGysbGwKwYBsuAAFmdBsCoGAAABpvZW8BAQOgQAAAHR6wQBuQAAGgAAAAGCpmbXM7MAAAAQAAFAAGAKkXDgA5GwAAyBsAAPQbAAByHQAApR0BAAcNAYmgQAAAHFqgMAAAGWCgQAAAHQCgUAAAGwagIAAAFwOggAAAHaAnCQc6MAAAAQAAAAAACwAQAAAAkw7fDuAO4Q7pFuoW5heLGl8cCh1rHZgdIUMAADsdPB1mHVFDAADKE4IXgxeEF4UXhhc3AQCGoBAAAArasCANIQPuoCAAABPIGVACOzAAAAEAAA4AAgBGBAAAJwYNAA==")
\ No newline at end of file
diff --git a/api/search.index/3332d8ddac43.js b/api/search.index/3332d8ddac43.js
deleted file mode 100644
index ee2cd60d8..000000000
--- a/api/search.index/3332d8ddac43.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAGghwBCBtmaaUARQAABLscZVEZUhlwGiAbehtuHHIcrRyxHBgdgh0VAEMAADAMGA0YQxhEGHORF70X+wNvdXk=")
\ No newline at end of file
diff --git a/api/search.index/3377dfae3c8c.js b/api/search.index/3377dfae3c8c.js
deleted file mode 100644
index 497c548c9..000000000
--- a/api/search.index/3377dfae3c8c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQEAOzAAAAEAAMgAAQDgE8gAMUIAAI0ZjhmUG9wbBQBSAAAGvB1krR0FAE8AAAa3HWSiHfMGAmNw9QcYAAABAAEAAQDbBBUAQAAAAK4dNZYYlxj7hBhACA==")
\ No newline at end of file
diff --git a/api/search.index/337dfd05e09b.js b/api/search.index/337dfd05e09b.js
new file mode 100644
index 000000000..dce64a795
--- /dev/null
+++ b/api/search.index/337dfd05e09b.js
@@ -0,0 +1 @@
+rn_("MUYAAI0cjhyPHJAcFQBRAAAGvh1kfx2tHRsCoAAAABEMYW9hRgAAJRt0HHgcsxy3HB4diB0TAAOgUAAAHUqgkAAAGntiY3A6MAAAAQAAAAAAJwAQAAAABg0HDQgNCQ0KDQsNDA0NDQ4NDw3LExoXGxeBF4IX0hfhF2AYaRiuGK8YBhkMGU0ZYBlhGXYZhxqIGpIakxoxG5IblBvrG6YcpxzsHO0cFx0FAFQAAAa/HWSwHQUASwAABsMdZLUdGwKgsAAAHLFhbwGDAqCQAAAdLaEQAAAdjml1GwKwUBj7At9hZTcOAIigsAAAHG2wIBerAAGgQAAAF8ko8AU7MAAAAQAAFAAFAA0JAAC3ChAAGxEAACgRAABBEgAAW4SgEAAAHbiwQBkjAriQAEQBAQKwYB2VAAGgcAAAGnplZjswAAABAABLAAoA8woCAAANAQCRDgAAlw4AAMwSHwDRGAAA1BgfAEkaAQBJGwAA1Bw [...]
\ No newline at end of file
diff --git a/api/search.index/33b8b1b2ff1d.js b/api/search.index/33b8b1b2ff1d.js
deleted file mode 100644
index ba916b3af..000000000
--- a/api/search.index/33b8b1b2ff1d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAAEjRxjvhvzAwFzATYbAAATAAOggAAAHFGgMAAAGvJmcnQBhA4AAEMAhKBAAAAXdaAgAAAa87AQF4AAAUkABPICCQAAKQk=")
\ No newline at end of file
diff --git a/api/search.index/33bd36508e1f.js b/api/search.index/33bd36508e1f.js
deleted file mode 100644
index 0b9a850d9..000000000
--- a/api/search.index/33bd36508e1f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQADoEAAABinsGAclQABgBggNPABZnBzOzAAAAEAABAABgALGAAALRoAAHIaAQBVGwAAnhsFAOobBQAbAqAAAAAOpXR2")
\ No newline at end of file
diff --git a/api/search.index/33ce06abc2c6.js b/api/search.index/33ce06abc2c6.js
deleted file mode 100644
index ece1f9c80..000000000
--- a/api/search.index/33ce06abc2c6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHTB0iZxhoGDobb3kjAgKwYBpkAiBsdDswAAABAAAGAAMAKhEBAEcSAwAGGAAAIwECoGAAAB25ZGn3nAoAAFsScwAjAAEAGwABAAUBwAAAA3EbAH0YYXMFAcMAABc9HT4dEp4cnxxkc1MBA6BQAAAbz2ZtbvINFwAArQAFAcAAAANDGgAMF2FzBQHAAAAEDBtQNhg3GDgYORg6GDsYaXMFAcMAABcLHQwdEs0bzhtkc/MEhCAwBDowAAABAAAAAAAHABAAAAA6EcMSxBLFEsYSxxLqHKAdBQBAAAAGth1knx0rAqBAAAAXuWlzBQHDAAAXYhxjHBLJGMoYaHO3AACFoEAAAB18sDAOlAnqIFCCOjAAAAEAAAAAAAcAEAAAAFYECAiCDmEYCx0MHT0dPh1lBEEAABaPGpAaC8EcDOAcBJgYDOEcZm1ydXcYDRkNGg0bDVwNXQ1eDXuEoBAAABEVEYEA")
\ No newline at end of file
diff --git a/api/search.index/33df23bc06c2.js b/api/search.index/33df23bc06c2.js
deleted file mode 100644
index d72ba2dfd..000000000
--- a/api/search.index/33df23bc06c2.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBDAAAUyBwfHXXVF3YZFQBDAAAEOxtmeh17HRUARgAABIUcZoodix1TgQOgAAAADVJvc3TzAAJnb/SKDgAApAPGBAsB")
\ No newline at end of file
diff --git a/api/search.index/349311d34f41.js b/api/search.index/349311d34f41.js
deleted file mode 100644
index 08c2ea6fb..000000000
--- a/api/search.index/349311d34f41.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQIBoHAAABp1ZjswAAABAABAAAMAlQ4AAMgSHwDPGB8AGwKgYAAAGWdpdSMAA6AwAAAXh6BAAAAdNWFyc/IeGQAAtwI=")
\ No newline at end of file
diff --git a/api/search.index/34aa661babb8.js b/api/search.index/34aa661babb8.js
deleted file mode 100644
index 30d27d00c..000000000
--- a/api/search.index/34aa661babb8.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAADaxxqYRwlAEMAABEoHUMdZRgbTR1OHRUARwAABAUdZZcbmBsrAqAQAAAbv2R6YUIAAJcXmBeZF5oXmxecF50XlwkAiLBgGiECgaAQAAARJaAgAAAT0KBAAAAZBBxJA/X4FQAAWgLYAQEABgE=")
\ No newline at end of file
diff --git a/api/search.index/34ac4f4707c0.js b/api/search.index/34ac4f4707c0.js
deleted file mode 100644
index 0fdadb6bc..000000000
--- a/api/search.index/34ac4f4707c0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("UUMAAL4TvxPAE8ETFBcVFwUASgAAFHAdcR1tTx0VAEYAABQSHRMdbekcbB0zgQOg0AAAHUpmcHNTgQOgIAAAHaxlaXU=")
\ No newline at end of file
diff --git a/api/search.index/34ba97ae2a8f.js b/api/search.index/34ba97ae2a8f.js
deleted file mode 100644
index 02104718e..000000000
--- a/api/search.index/34ba97ae2a8f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQJGAAAhyBv0G3IdBpQdCKAdaXN0ixoVAEEAABRoHGkcbUgbSRsTBAKgIAAAG6ppcvcqGQAAAQBCAQEALAEyADIBkwCEsEAYkgLmsJAcvwABFCEAOjAAAAEAAAAAAAgAEAAAACAYRhhHGP8aABthG2IbbxtwGw==")
\ No newline at end of file
diff --git a/api/search.index/34dd69303dad.js b/api/search.index/34dd69303dad.js
new file mode 100644
index 000000000..418b035b3
--- /dev/null
+++ b/api/search.index/34dd69303dad.js
@@ -0,0 +1 @@
+rn_("BQBAAAAS9hoIG2sMEVFCAACEDmYYER0SHUMdRB0VAFAAAAa+HWR/Ha0d1QFCAAAJEx0GhBtwcvQX9Rf2F/cX+Bf5F/oXQRhCGEMYRBhFGEYYRxj7AmJye4Sg8AAAHTkBQQE=")
\ No newline at end of file
diff --git a/api/search.index/35706baa243e.js b/api/search.index/35706baa243e.js
deleted file mode 100644
index d17000a35..000000000
--- a/api/search.index/35706baa243e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAAGcRxmXxgVAUYAAAZwHAgUHWJ3XRheGPMBAmNz9t0KAAABAO8BAQABAGENKwOgEAAAG8B/vx0nnWVrcnY=")
\ No newline at end of file
diff --git a/api/search.index/35c866da1d30.js b/api/search.index/35c866da1d30.js
deleted file mode 100644
index c398cbdab..000000000
--- a/api/search.index/35c866da1d30.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBIAAAEBR1llxuYGyOCA7BgGiECgaBAAAAZBGRpcvMAAWk7MAAAAQAATgEEADYGyAALCAAAVRgAAI8ZgwAFAcAAABeDG70bA38bZXAVAEsAAAQFHWWXG5gb8wEBaTswAAABAACEAAIAVRgAAI8ZgwAVAEAAAAWOG3cTGBQY+wJnaQUARQAABrEcYgcZBQHBAAACCBkCBhlidPMAAXT0HREAABIBAQBUBkUBQgAAJFgcWRwmHQWMG2N31xfYF7kYuhjFGysCoEAAABosZWkFAUQAAA+pHRJeGl8aY3JcGAUBwAAAI0EZQhlmHAndG2FvtwwDiLAwF9YEkaBwAAAaYKAwAAAYuzSYEvWMDgAAAQA0ACQJ0wC1AUAAABRwHXEdAKwdbXPkFuUWfxiAGD8ZQBlHGk0aVBurG/EcTx37hShgBA==")
\ No newline at end of file
diff --git a/api/search.index/360ed2a9ab53.js b/api/search.index/360ed2a9ab53.js
deleted file mode 100644
index c29d2f19f..000000000
--- a/api/search.index/360ed2a9ab53.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBSAAAGuB1kpx0FAFQAAAa5HWSqHfOEAnB0BQBRAAAGtR1knB0FAFgAAAa+HWS0HQUAUgAABrwdZK0dBQBPAAAGtx1koh3zhwJjcAUASAAABmAdZN8bBQBJAAAGpB1kcx0ThAOgwAAAHYOggAAAHV9mcHMbAqFAAAAdoWZsBQBaAAAGvR1krx37AmFlpzMAyimtM27YvqDAAAAc/6DAAAAdAKAwAAAYYwAbhB0B1xsAAAkCIbVWfyjasCAXgAABZW4FAEMAAAQfHXV2GfMCAW/y9BYAAAsBZQBDAAAGdRxyUxlUGVUZVhlXGVgZWRnXAgCGoRAAAB11oBAAAA6IoUFAAcQMAAA=")
\ No newline at end of file
diff --git a/api/search.index/363872c01e77.js b/api/search.index/363872c01e77.js
new file mode 100644
index 000000000..643bf1b96
--- /dev/null
+++ b/api/search.index/363872c01e77.js
@@ -0,0 +1 @@
+rn_("AQIBoHAAABp6ZjswAAABAABAAAMAlw4AAMwSHwDUGB8AGwKgYAAAGWxpdSMAA6AwAAAXi6BAAAAdO2Fyc/IjGQAAuAI=")
\ No newline at end of file
diff --git a/api/search.index/36525677a8fc.js b/api/search.index/36525677a8fc.js
deleted file mode 100644
index 8f7678894..000000000
--- a/api/search.index/36525677a8fc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUgAAEUdSR1bHWMdMUIAAGwcehyuHLgcZQFDAAAIqx0DHBpiZPoV+xX8Ff0V/hX/FQAWGwOg0AAAHZGgMAAAG3thaGlBQAAAoQqiCqsW5xboFmFIAAAuGS8ZMBkxGTIZMxk0GQUAUgAABrgdZKcdBQBUAAAGuR1kqh3zhAJwdAUAUQAABrUdZJwdBQBYAAAGvh1ktB0FAFIAAAa8HWStHQUATwAABrcdZKId84cCY3AFAEgAAAZgHWTfGwUASQAABqQdZHMdE4QDoMAAAB2DoIAAAB1fZnBzGwKhQAAAHaFmbAUAWgAABr0dZK8d+wJhZaczAMoprTNu2L6gwAAAHP+gwAAAHQCgMAAAGGMAG4QdAdcbAAAFAcEAAASMHQWXHXFz8wIBcjswAAABAAAiAA0AyhYNAG4YAwAPGQAAXRkBAH8ZAABLGgAAZRoDAHYaAAAKGwEAaRsBAOAbAAC+HAAADR0AAPOBAml5KwK [...]
\ No newline at end of file
diff --git a/api/search.index/366a4a8d5d77.js b/api/search.index/366a4a8d5d77.js
new file mode 100644
index 000000000..f1e2a24df
--- /dev/null
+++ b/api/search.index/366a4a8d5d77.js
@@ -0,0 +1 @@
+rn_("FQBEAAAD3htsdRndHCOBAkhrlZa9yHB2CQBbA6AgAAAdLwBvcg==")
\ No newline at end of file
diff --git a/api/search.index/36e6bded81df.js b/api/search.index/36e6bded81df.js
deleted file mode 100644
index 8b81abe78..000000000
--- a/api/search.index/36e6bded81df.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAG/BgH4Btlb/UAQgAAEnQbmx11nQ6eDp8OoA79FtkXWBpZGuoa6xodG1Ebgxu9GyodNx0bAqAAAAAct2lzFQFDAAAGZx0CBB1icpwbfRwFAEEAABRwHXEdbU8dJQBEAAAAgxxz6BvpG70ccwQEoKAAAB2JZmlzdgFiHQAAE4ICsCAYrQABaW77A2Fvcg==")
\ No newline at end of file
diff --git a/api/search.index/37280366aac0.js b/api/search.index/37280366aac0.js
new file mode 100644
index 000000000..4e6f49075
--- /dev/null
+++ b/api/search.index/37280366aac0.js
@@ -0,0 +1 @@
+rn_("AQIBoDAAABjTajswAAABAADJAAIAMQ0AAEEQyAABAAGAF/sAEAFzOjAAAAEAAAAAABIAEAAAAMsMzAx8F30XJxgoGIYYhxiIGPYYZRkiGnAaDRsbGy0bUhufHK4d+wJkbg==")
\ No newline at end of file
diff --git a/api/search.index/3778f5a4cb4e.js b/api/search.index/3778f5a4cb4e.js
deleted file mode 100644
index 71e4550dc..000000000
--- a/api/search.index/3778f5a4cb4e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("dQFCAAABTBsEjBxpczUZNhlQGlEamxvhG+IbyhwFAEIAAAKuHW2jHSOHAqCAAAAdsmFrYwIDoKAAAB2oYWNr8wEWAAABAO4GFQBCAAAH5RxtzReoGCOBAqAwAAAaHWJrMwADoAAAAAymZWlv8l8NAAAmAAUBwQAACNEbA6gbYXQxQAAAsAo/EUoRQhoBAwA7MAAAAQAAyAABAO8SyAABAAA7MAAAAQAAyQACAPcKAACsDcgAGwKgIAAAHLJkdOcBAIagQAAAGzugYAAAHXYgIRY6MAAAAQAAAAAAJAAQAAAAVwQJCAoIJA2BDosOORFCEUMRSREaEtcTqBbfFuAW4Rb+FqYX7RfuF2cYaBhOGU8ZZxlyGfIaHBslGzobqBvRG90bmBzjHHodex2rhLBQGi4AAaBgAAAb1xEABQ==")
\ No newline at end of file
diff --git a/api/search.index/378414a428c6.js b/api/search.index/378414a428c6.js
deleted file mode 100644
index 108f21a6c..000000000
--- a/api/search.index/378414a428c6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("NQBCAAAGuB1kgRpCHXkdpx0rAqBgAAAa92Z0FQBEAAAEahxl4RdzGYuEsGAczQDesAANFQAyoAAAAAjrZAEABQBFAAAGbhxiWxgFAEcAABZcHV0dZm0cE4MCoDAAABpccHMbAqBwAAAbw2FlCQKhAAAAHUegsAAAHQdhb0sDoEAAABxSoKAAABySY3F0BQBJAAAGRh12whsFAcAAAAYgHQFVHDNxBQHAAAACiRsE6Bxpb0cChIagMAAAHJCgIAAAHFSgcAAAHNegMAAAHJHAiAMjgQKgYAAAG8BjdBcPAoigkAAAG8Gg8AAAHTihQAAAHW8MkRYBkQ0AAPsDZXV5")
\ No newline at end of file
diff --git a/api/search.index/37d1fb94674a.js b/api/search.index/37d1fb94674a.js
new file mode 100644
index 000000000..c33424d29
--- /dev/null
+++ b/api/search.index/37d1fb94674a.js
@@ -0,0 +1 @@
+rn_("BQHAAAABrg4KvxtlaQUBRAAAB1kcB3EdY3PWGwEBAbAAEiIAAXM7MAAAAQAAFAAJACINAACoDgUAkRgBAJkYAQDOGAEA9BgBAJQaAQDTGwEApBwBAEsDoEAAAB1doIAAABs4Y2x0JQBHAAADvhtmtRhkG2UbFQBCAAAD1xdhIBIhEksDoLAAABxYoGAAABmFY250BQHCAAALzBw0ER0SHUMdRB1hZQEA0KAwAAAdQKBAAAAZbReDB3lMBKAgAAAOp6AwAAASH7BwHGgAASvxC+VSa7AwGNIEuKCAAAAaI0FFzZVXk6BAAAAWr0Gn+tWn2lQsS+E46qBgAAAbBjVKjZHYArAgGJsAAcDuJU87MAAAAQAAwwEGAEQEAAA7BesAMA0AAIEOAABtD9MATxIAAA==")
\ No newline at end of file
diff --git a/api/search.index/3849b96a988c.js b/api/search.index/3849b96a988c.js
new file mode 100644
index 000000000..9fd7cea07
--- /dev/null
+++ b/api/search.index/3849b96a988c.js
@@ -0,0 +1 @@
+rn_("MUgAACgbzBvNGxYdEwICoFAAAB0nZ3I7MAAAAQAAGwAJALoOCAADFwMALRgBAEsaAABmGgAAVRsBAF4bBQDYGwEADx0AAA==")
\ No newline at end of file
diff --git a/api/search.index/39725572d19f.js b/api/search.index/39725572d19f.js
deleted file mode 100644
index 9846d6fe6..000000000
--- a/api/search.index/39725572d19f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQYAOzAAAAEAAB8AAQDPGB8ABQBBAAAGth1knx0TggKgQAAAHXxtbwEAAaBgAAAduGQ6MAAAAQAAAAAAFQAQAAAA5gjnCJoO5A4gEmgZgRrwGrEbshuzG7QbtRu2G7cbvxzAHOAcNh1CHXkdpx1LA7AgDRUAMqBQAAAaH2Jyc3uEoPAAABzPEEEB")
\ No newline at end of file
diff --git a/api/search.index/39bc0ffb0d0f.js b/api/search.index/39bc0ffb0d0f.js
new file mode 100644
index 000000000..7a9a403a0
--- /dev/null
+++ b/api/search.index/39bc0ffb0d0f.js
@@ -0,0 +1 @@
+rn_("BQHHAAAE8RwCRh1pbgUBwAAABwwdEtsTbBlveQUAQAAACiMbadkcBQHAAAAVaRlqGQVoGWFyAQAAOjAAAAEAAAAAABMAEAAAAB0ZHhl3HIIcqRyqHKscrBytHK4crxywHLYcuhy7HPocKB1iHWMdhB0jAQKgEAAAG4Z2efR6HAAAeAABAC0AxQNBAAAF1RwFyhcWXh1fHRVJG9QcYWNlc/oKGRLNFhIXvxfAF3kYNxvVHNcc2Bw5HbkdSwSwABbMAjygUAAAGIOgcAAAHF1kbW92dQBEAAASbRtuG2mqG6sbrButG/Yb9xv4G/kbAQACoNAAAB1boTAAAB2PYXAB3hMAABsDoDAAABgsoBAAAByYZG1zBQBGAAAQ5BsCHXKTG/MDAXAB/hYAABsCoEAAABlVYW8FAEMAAAbEHWS6HfMBAW8B3xYAAAUAQgAAB00dcAoX+wJibPdfAMugQAAAGDFATTAbOjAAAAEAAAA [...]
\ No newline at end of file
diff --git a/api/search.index/39c25a6db512.js b/api/search.index/39c25a6db512.js
new file mode 100644
index 000000000..8d208071c
--- /dev/null
+++ b/api/search.index/39c25a6db512.js
@@ -0,0 +1 @@
+rn_("BQBBAAAGvB1kpR0TiAKgQAAAHYJtbwUBQAAABiYdAVscM3HLHBUARAAAA94bbHUZ3RwxSAAASx1PHWEdaR0xQgAAchyAHLQcvhwFAcAAAAyxHQ2XHWFoDweHoIAAAB1roIAAAB10oVAAAB25oKAAAB2hHgAc84ECcHYrAqAgAAAdL29yBQHAAAACjxsUWRjuHGlvBQHBAAAM2RwDKxltboFGAAADGQQZJxs1G40bmRvcG3Yc4Rw3VACMsHAdMAANoDAAAByWoCAAABxasBAaTwMloEAAABiWoDAAAByXoIAAAB0a1qkTOjAAAAEAAAAAABcAEAAAABgNGQ1KDUsNTA1NDU4NTw1QDVENUg1TDc0T2RP3FvsWABcTGGIYYxiDGR4aHxoJG3UARQAABScdcmYaXhtfG2AbYRtiG2Mb2Rv7AmNnBQBDAAAGxB1kuh3zAAFvAd8WAAD7A2xvcg==")
\ No newline at end of file
diff --git a/api/search.index/39ceab227428.js b/api/search.index/39ceab227428.js
new file mode 100644
index 000000000..892dd74ea
--- /dev/null
+++ b/api/search.index/39ceab227428.js
@@ -0,0 +1 @@
+rn_("gUIAAI0O2xOqF/IX8xdsGXcZIRvjGxUBRwAABzgdBQkdYmaOG5cdBQBBAAAGvB1kpR0TiwKgQAAAHYJtbysCoGAAAB0MbHQFAsAAADSNHI4cjxyQHDAcEXodix2MHQjxGm5yc2UAQAAAB5Abco4XjxeQF5EXkheTF5QXBQHBAAAEgxsF3xtxc/ODAnJzvwOGoHAAAB2mEUFB")
\ No newline at end of file
diff --git a/api/search.index/39e957e97afb.js b/api/search.index/39e957e97afb.js
new file mode 100644
index 000000000..6ae26be00
--- /dev/null
+++ b/api/search.index/39e957e97afb.js
@@ -0,0 +1 @@
+rn_("BQHAAACLqRyqHKscrBytHK4crxywHCgdCH4cb3kxRAAAUhhTGFQYVRgFAcAAAAZRGgPIF3J1zwHFoQAAAB1JsGAZcAABBAEwAg==")
\ No newline at end of file
diff --git a/api/search.index/3b15b927b967.js b/api/search.index/3b15b927b967.js
new file mode 100644
index 000000000..a5abccffe
--- /dev/null
+++ b/api/search.index/3b15b927b967.js
@@ -0,0 +1 @@
+rn_("BQBCAAADIxthuBxlAEAAAAZeGGLYCtkKjA2NDY4Njw2QDQEAADswAAABAACDAAEAdxWDACsCoEAAABhqZW+RRAAAtxu4G7kbuhu7G7wbvRvFHMYcPB1bA6CAAAAdhWJzdDFCAADcE90TDhkPGfMAAWU7MAAAAQAAzAADAPkKAACuDcgAwxICAPuECGAE")
\ No newline at end of file
diff --git a/api/search.index/3b1de42af442.js b/api/search.index/3b1de42af442.js
new file mode 100644
index 000000000..f94399745
--- /dev/null
+++ b/api/search.index/3b1de42af442.js
@@ -0,0 +1 @@
+rn_("BQHAAAAVRBlFGQjjG2xuAYIDoVAAAB25oCAAABy+oIAAAB1pZHV3KwKgIAAAHS9vckMEA6BgAAAbmbBwHTAADWJlcAEAFwAAUUIAAEYZRxleHF8cbBwsHfsCY3T7AmFv")
\ No newline at end of file
diff --git a/api/search.index/3b3e2fc7d53e.js b/api/search.index/3b3e2fc7d53e.js
deleted file mode 100644
index cbd6add09..000000000
--- a/api/search.index/3b3e2fc7d53e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUAAAAwYDRhDGEQYBQFDAAAGZx0CBB1icn0cI4cCoEAAABy9ZnMbAqBwAAAY/GFyBQBEAAAAnRtzNxu3AADGoIAAABj9oDAAABERoGAAAB1GAAigCzowAAABAAAAAAAKABAAAADkCOUIkRe9FwQYBRh7GI4YARsmG8Ib")
\ No newline at end of file
diff --git a/api/search.index/3b9c8400ecb5.js b/api/search.index/3b9c8400ecb5.js
new file mode 100644
index 000000000..c96c429a0
--- /dev/null
+++ b/api/search.index/3b9c8400ecb5.js
@@ -0,0 +1 @@
+rn_("NQBAAAAG9xpp/gj/CJgKmQoFAEMAAAZ8HXfXGyMDAqBQAAAc9XN0AecOAABlAEQAAAV9GXK5FroWuxa8Fr0Wvha/FgUARwAAA8sbbL0YcUEAAFkYXBqzG7QbXBzuHC4dSR3jAISwkBovAAEUEAQ7MAAAAQAAEAAGAM8HCQAdGwAA/BsBAOIcAAAAHQAAUx0BAJ8CyKCQAAAdSKAQAAAOsKBwAAAdsqAgAAAW9qAgAAAdLQACig8=")
\ No newline at end of file
diff --git a/api/search.index/3bb86602168d.js b/api/search.index/3bb86602168d.js
deleted file mode 100644
index 48d3f3c82..000000000
--- a/api/search.index/3bb86602168d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAFyBMJWRphbQUBwAAACVgaCh0bY2wJAqBQAAAbgKEwAAAddWNyBQHAAAADiR0T/xoAG2x1IUgAABUdUx1UHfOCAmFvBQBBAAAH8Rph7xbzgQJpdfcAAIagwAAAG4OhIAAAHSrREAEBpQ4AAA==")
\ No newline at end of file
diff --git a/api/search.index/3bc00febf758.js b/api/search.index/3bc00febf758.js
new file mode 100644
index 000000000..4c2dd1f8b
--- /dev/null
+++ b/api/search.index/3bc00febf758.js
@@ -0,0 +1 @@
+rn_("FQBFAAAFSh1j7BztHFUAQAAAVKQYpRimGKcYqBipGHQgDYUNehmAGYQahRpRRQAAnhifGKAYoRiiGKMYBQBFAAAGiB1iFx0VAEEAAATKHGabHZwdFQBCAAAE6hxmnx2gHfsCYW8hRQAAXBqzG7Qb8wMDbHB384sZAAB8AdUBBQBCAAAE+xtjWBsjgQKgIAAAGKplbCMAA6DwAAAdp6CAAAAbtWVmcvMfDQAAEhACAPMAhSiAEjswAAABAAAHAAIA0woAAKkMBgAbAqCgAAAbhmVp")
\ No newline at end of file
diff --git a/api/search.index/3ccf0bd5e111.js b/api/search.index/3ccf0bd5e111.js
deleted file mode 100644
index ebf7523a7..000000000
--- a/api/search.index/3ccf0bd5e111.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHYh0BtxxhbwUBxAAAApodAZYdYW8jhQKgAAAAHS1kZgUBxAAABosdA3sdb3QbAqDgAAAdpmhvNwGGh6AwAAAc2qGAAAAdu6BAAAAdF6BQAAAdLiyIAwUBwAAAB2EdAbYcYW8FAcQAAAKZHQGVHWFvI4UCoAAAAB0rZGYFAcQAAAaKHQN6HW90GwKg4AAAHaVobzcBhoegMAAAHNmhgAAAHbqgQAAAHRagUAAAHSwsiANjAISgYAAAGGGgkAAAG+AlgAABnw0AAA==")
\ No newline at end of file
diff --git a/api/search.index/3ccf4f15484f.js b/api/search.index/3ccf4f15484f.js
deleted file mode 100644
index e1394fc48..000000000
--- a/api/search.index/3ccf4f15484f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAADAx0Bfw5hbwUBwAAAAwYbEnsYJhtydRUARAAABrgdZHkdpx3zAgFiAVIdAAAbAqBAAAAbGWl0MUMAAEQbRRtGG0cbFQBFAAAGpB1kcx2hHdMAhKDAAAAdDyCgAvcbEQAAAQCwAgEACQT1AJwDGwKg4AAAHXVldBUAQQAAEGcbaBtz7hrvGhMCAqAwAAAZd2luOzAAAAEAAAoABQA2EQAApxgAAEwaAACkGwMA8BsDADsDsEAa7AA1ZWx46wSgUAAAETw4aW9y")
\ No newline at end of file
diff --git a/api/search.index/3d47177d385f.js b/api/search.index/3d47177d385f.js
deleted file mode 100644
index 0af2d6ead..000000000
--- a/api/search.index/3d47177d385f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAB8RiSsRuyG7MbtBu1G7Ybtxu/HMAcNh1pdAUBQwAABmcdAgQdYnJ9HCOIAqBAAAAcvWZzBQBEAAAAnRtzNxvzAwJmcPQEGAAAAQCJAHMCm4SgQAAAFvWgUAAAGnQAQEk=")
\ No newline at end of file
diff --git a/api/search.index/3d486811cbdc.js b/api/search.index/3d486811cbdc.js
deleted file mode 100644
index 7d0eecc36..000000000
--- a/api/search.index/3d486811cbdc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUoAAPAb8RvyG/MbBQHCAABSHxkgGSEZIhkjGSQZVHkaehp7GnwafRp+Gmt2UUoAAOob6xvsG+0b7hvvG+uEsEAX5wABIBgC")
\ No newline at end of file
diff --git a/api/search.index/3dbe185dcd01.js b/api/search.index/3dbe185dcd01.js
new file mode 100644
index 000000000..113926226
--- /dev/null
+++ b/api/search.index/3dbe185dcd01.js
@@ -0,0 +1 @@
+rn_("IUMAAOQXZhlrHRUAQgAAATQdaRANEQ0hRwAAyxfMFyIZJQBGAAABPhtp7RbuFuoXAQYAOzAAAAEAAK8AAgCWGlcA/xtXACUASwAABKMdZlAdwB3BHfsCcXIFAcMAAFANEQ4RDxEQEeET4hMwRRtGG0cbSBthZfcDAIegUAAAF9MU4Aw6MAAAAQAAAAAAHwAQAAAA1wq6DLsMvAy9DL4MvwzADMEMwgzDDOYO3RbFF8YX+xf8F/0XERgSGC8YSBhJGG0bbhujG7YbxRuJHJkcRx2yHQ==")
\ No newline at end of file
diff --git a/api/search.index/3e2b8b9e9b06.js b/api/search.index/3e2b8b9e9b06.js
new file mode 100644
index 000000000..f45cf557f
--- /dev/null
+++ b/api/search.index/3e2b8b9e9b06.js
@@ -0,0 +1 @@
+rn_("BQLAAAASRRpGGgJaGgcIGWFvciFDAABEGqAcPx0FAcAAABIcGQcdGRAdnh1pbwUBxgAACQAdCQEdY3YFAcAAAAQeEQ1xHG9yZwsAi6DQAAAb4rBwGl0AkqBQAAAW9qCgAAAaX6BAAAARHaCgAAAaYD2hDjowAAABAAAAAAAWABAAAABkAWUBZgHkA+IWdxh4GGQZbhpvGnEbeRt8HH0coRzjHOQc9BwpHSsdNR02HW4d")
\ No newline at end of file
diff --git a/api/search.index/3ec997169881.js b/api/search.index/3ec997169881.js
deleted file mode 100644
index 03bee8603..000000000
--- a/api/search.index/3ec997169881.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("VQBFAAAIEB1n/xYAFwEXAhcoGCkYGwKgAAAAFwNjZ0UBQgAAJFgcWRwmHQWMG2N31xfYF7kYuhjFG2sDoEAAABosZWlv")
\ No newline at end of file
diff --git a/api/search.index/3ef4ca6c1695.js b/api/search.index/3ef4ca6c1695.js
new file mode 100644
index 000000000..ecb52bc84
--- /dev/null
+++ b/api/search.index/3ef4ca6c1695.js
@@ -0,0 +1 @@
+rn_("MUoAAI0cjhyPHJAcFQBFAAARsRv3HGkdGmYcGwKwkBy/AAFlaQUCRgAAEfobeB0Gmh0Iph1pc3SQGhUAQQAAFG4cbxxtThtPGxMEAqAgAAAbsGly9y8ZAAABAEIBAQAtATIAMgH7AmNuMUUAABkaGhobGhwaBQHDAAAzShtLG0wbTRsFHhtwc/vFAAiAGQUAQQAANP0ckx2UHa8dbH4d+wJjdA==")
\ No newline at end of file
diff --git a/api/search.index/3f2005758fd0.js b/api/search.index/3f2005758fd0.js
new file mode 100644
index 000000000..8e10627da
--- /dev/null
+++ b/api/search.index/3f2005758fd0.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHaB0BvRxhbwUBxAAAAqAdAZwdYW8jhQKgAAAAHTNkZgUBxAAABpEdA4Edb3QbAqDgAAAdrGhvNwGGh6AwAAAc4KGAAAAdwaBAAAAdHaBQAAAdNCyIAwUBwAAAB2cdAbwcYW8FAcQAAAKfHQGbHWFvI4UCoAAAAB0xZGYFAcQAAAaQHQOAHW90GwKg4AAAHatobzcBhoegMAAAHN+hgAAAHcCgQAAAHRygUAAAHTIsiAM7A6CQAAAb5mNmcA==")
\ No newline at end of file
diff --git a/api/search.index/3f47f547b099.js b/api/search.index/3f47f547b099.js
deleted file mode 100644
index c525aeebc..000000000
--- a/api/search.index/3f47f547b099.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAAiQ0GWBhlaSsCoEAAABEwcnQ1AEEAAAGAG3Z0HOwc7RwaHSUBQQAAFlgdWR0VQxvOHGVzFRLJFnQYKwOwABbIAjugcAAAHFdkb3YBAAKg0AAAHVWhMAAAHYlhcAHaEwAAGwKgMAAAGCdkbQUARgAAEN4b/BxyjRvzAwFwAfoWAAAbAqBAAAAZUGFvBQBDAAAGvh1ktB3zAgFvAdsWAAB3AwCHsHAbZwABoMAAABzrNUEQOjAAAAEAAAAAAAoAEAAAANQK9wyEDZINkw2UDZ0Nng1FGGMZWxolAEAAAAOaHGl2HHcc7hw1AEAAADhtG24beRysHGGSGDUbeBuzHAUARgAAAGEcczEbBQHBAAAAKxgidxh4GFMcZWm7hIAaYgASoSkABBsCoCAAAA1fZXlRQwAARhhHGP8aABthG2IbMUQAABUYFhgXGBgYBQHAAAAvdB2FHYYdJ3Qc7BztHGFyIwQDoBAAABy [...]
\ No newline at end of file
diff --git a/api/search.index/3f63ff68d52e.js b/api/search.index/3f63ff68d52e.js
new file mode 100644
index 000000000..115907155
--- /dev/null
+++ b/api/search.index/3f63ff68d52e.js
@@ -0,0 +1 @@
+rn_("BQHAAAAAiw0GXRhlaSsCoEAAABE0cnQ1AEEAAAGGG3Z6HPIc8xwgHSUBQQAAFl4dXx0VSRvUHGVzGRLNFnkYKwOwABbMAjygcAAAHF1kb3YBAAKg0AAAHVuhMAAAHY9hcAHeEwAAGwKgMAAAGCxkbQUARgAAEOQbAh1ykxvzAwFwAf4WAAAbAqBAAAAZVWFvBQBDAAAGxB1kuh3zAgFvAd8WAAB3AwCHsHAbbQABoMAAABzxNUEQOjAAAAEAAAAAAAoAEAAAANYK+QyGDZQNlQ2WDZ8NoA1KGGgZYBolAEAAAAOgHGl8HH0c9Bw1AEAAADhzG3QbfxyyHGGXGDobfhu5HAUARgAAAGccczYbBQHBAAAAMBgifBh9GFkcZWm7hIAaZwASoikABBsCoCAAAA1hZXlRQwAASxhMGAQbBRtnG2gbMUQAABoYGxgcGB0YBQHAAAAveh2LHYwdJ3oc8hzzHGFyIwQDoBAAABy [...]
\ No newline at end of file
diff --git a/api/search.index/3f727f7621a5.js b/api/search.index/3f727f7621a5.js
new file mode 100644
index 000000000..e76639203
--- /dev/null
+++ b/api/search.index/3f727f7621a5.js
@@ -0,0 +1 @@
+rn_("VQFBAAAjHxEgEdAYAMUMZnM5EjoSOxI8Ej0SPhIFAEEAACXrG6Ycpxx3+RoThwKgMAAAGxJlc5uEoCAAABhdoIAAABkUAQgJ")
\ No newline at end of file
diff --git a/api/search.index/3f87a8eb318b.js b/api/search.index/3f87a8eb318b.js
deleted file mode 100644
index a8d9a166a..000000000
--- a/api/search.index/3f87a8eb318b.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUUAAFsZXBmOGwUARgAABn4dZv0cBQBFAAAGGB1iLBsFAEAAAASNHGO+G/MCAnN3ATYbAAArAqBgAAAadWFppwIAhrBgHY8AAaCAAAAcUaAwAAAa8jAAFzswAAABAABWABMA8QoCAP4MAQCbDQAAhA4AAI8OAACVDgAADREAAE4SAADIEh8AwxMAAPgWAAAQGAEAExgBAMwYAADPGB8ARBoBAEMbAADOHAAAWh0AAA==")
\ No newline at end of file
diff --git a/api/search.index/3fa242d95c0a.js b/api/search.index/3fa242d95c0a.js
deleted file mode 100644
index 6654c7d30..000000000
--- a/api/search.index/3fa242d95c0a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAXOx08HQp1HXB0QwIDsJAdjwABoHAAAB1maXBzAcMXAABRQAAAsgqzCuIW4xaYGMMbdQBAAAA2IButHBgdgh1ixxN9F34XARmNGo4aLBsRHfMEAXIBFxEAAAUBwAAABGkdAhoSb3kFAcAAAAMZGwQnHWFvYUYAALEbshuzG7QbtRu2G7cbFQBEAAAGuB1keR2nHfMCAmJpAVIdAAAhQwAAOBv1G40cBQFFAAAJ1hwVhRuGG2Rz0hf7AmFvlwEAhqDAAAAcj6BwAAAdOqBAAAAWqjQBRPTGFgAAWgMyAWwABQBDAAARbhlvGWWGDhUAQQAABMQcZpUdlh21AEIAAATkHGYWEhcSGBIZEiwZLRlEG0UbRhtHG5kdmh37AmFvJQBDAAAYHxsPHWdPGrobuxshRwAA0BfRF68YIUUAAFcarRuuG2UAQQAABlkYYtYK1wqKDYsNjA2NDY4NZQBDAAAGpB1kehd7F3w [...]
\ No newline at end of file
diff --git a/api/search.index/401dc490d6d0.js b/api/search.index/401dc490d6d0.js
new file mode 100644
index 000000000..1075be3ad
--- /dev/null
+++ b/api/search.index/401dc490d6d0.js
@@ -0,0 +1 @@
+rn_("VQBFAAAIFh1nAxcEFwUXBhctGC4YGwKgAAAAFwdjZ0UBQgAAJF4cXxwsHQWSG2N32xfcF74YvxjLG2sDoEAAABoxZWlv")
\ No newline at end of file
diff --git a/api/search.index/4033723baa7c.js b/api/search.index/4033723baa7c.js
deleted file mode 100644
index 8fcc01613..000000000
--- a/api/search.index/4033723baa7c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AYMCoNAAAB13oQAAAB2HY3AFAEgAAAdrHXPQG/MBAmZ386kNAAABAAEAJQBCAAAOfx1jqxisGOkaW4SgoAAAGW+gIAAAHFcVQAA=")
\ No newline at end of file
diff --git a/api/search.index/404eed1c24f2.js b/api/search.index/404eed1c24f2.js
deleted file mode 100644
index 405816db4..000000000
--- a/api/search.index/404eed1c24f2.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAU6xbsFhO7E7wTZnQFAEUAAAZGHXbCGwUBwAAABnkbABQRY3NXAQCFoJAAABscoCAAAA58YQAD82EBAACuBxAE")
\ No newline at end of file
diff --git a/api/search.index/4096f1237958.js b/api/search.index/4096f1237958.js
new file mode 100644
index 000000000..837fa1c42
--- /dev/null
+++ b/api/search.index/4096f1237958.js
@@ -0,0 +1 @@
+rn_("BQHEAAARehdOHQTgG2l0JwAAx6AwAAASP7CAGjYAAbBAF5gAAaDQAAAcnbAgGvEANaBgAAAbfYAEoA306AcAAEMJ5AVCAQUBwAAAC2AcBBcRbnQVAEgAAAa2HWQiHZgdI4ECsFAZSAABZnQFAcAAAAXHHDRyGIcZVxopG2NzEwACoKAAABtUZXTzQwQAAPYAAQAFAcIAAAzLHAKrFmRzBQBCAAAB3hNl1gr7A2VpcgEAADswAAABAAAXAAUAsgwHADIYBgD9GgYAnBsAAN4cAAAFAEAAAASTHGPEG/MDAXMBOxsAABMCAqCAAAAcV2ZyAYYOAADzAgJpcwGQDgAAAQADoEAAABr1oNAAABvcsQAc1wABYmN08/0IAACZAQEABQHCAAAAiw0GXRhlafsCY2RHHwCJoOAAABsjoGAAAB3CoFAAABEWOYEHOjAAAAEAAAAAAA4AEAAAAGABAAmaCpsK1gwFDX0OnhifGKA [...]
\ No newline at end of file
diff --git a/api/search.index/40e566dec977.js b/api/search.index/40e566dec977.js
new file mode 100644
index 000000000..61645951e
--- /dev/null
+++ b/api/search.index/40e566dec977.js
@@ -0,0 +1 @@
+rn_("BQHFAAABTh0E4BtpdNFDAAAyGDMYNBg1GDYYNxg4GP0a/hr/GgAbARsCGwMb+wJpdDFDAADSE9MThhk4GwUBwAAACeEbFCIbVxtlcCFCAADnG+gb0BwFAEIAAAK0HW2pHSOHAqCAAAAduGFrYwcDoKAAAB2uYWNrAfYcAAAzAAOgQAAAGhhjZHQBPxsAAEcDAIawkByRAHegUAAAG1ugAAAAHM8EqCEBfB0AAA==")
\ No newline at end of file
diff --git a/api/search.index/40f5f8e1784c.js b/api/search.index/40f5f8e1784c.js
deleted file mode 100644
index b2253444c..000000000
--- a/api/search.index/40f5f8e1784c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("JQBDAAAOfx1jqxisGOkaIUEAAHgXeRcdGm8AhaBAAAAZN6BwAAAb17AgGvAB8AGhBAUBwAAAL3QdhR2GHSd0HOwc7RxhciMDA6AQAAAchrBQHNAAYWVwcwH7FgAA+wJheQ==")
\ No newline at end of file
diff --git a/api/search.index/4152e3741372.js b/api/search.index/4152e3741372.js
deleted file mode 100644
index 4188bfe0e..000000000
--- a/api/search.index/4152e3741372.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAA1fBz0HFwdXR0MZh1haRMAAqAwAAAb2GZsOjAAAAEAAAAAAAgAEAAAAHwYERlwGd4bbRzXHPwcRx1vHfMAAXIBjRsAAA==")
\ No newline at end of file
diff --git a/api/search.index/41703f704037.js b/api/search.index/41703f704037.js
new file mode 100644
index 000000000..7d985e09a
--- /dev/null
+++ b/api/search.index/41703f704037.js
@@ -0,0 +1 @@
+rn_("FQBIAAATUx1UHWwvGjAaMUIAABoYGxgcGB0YBQHAAAAHZx0BvBxhbwUBxAAAAp8dAZsdYW8jhQKgAAAAHTFkZgUBxAAABpAdA4Adb3QbAqDgAAAdq2hvNwGEh6AwAAAc36GAAAAdwKBAAAAdHKBQAAAdMiyIA1sDoNAAAB2sbG11BQHEAAAGkR0DgR1vdO8AhaDAAAAb3KCwAAAboIFACQ==")
\ No newline at end of file
diff --git a/api/search.index/41b9c6e51390.js b/api/search.index/41b9c6e51390.js
new file mode 100644
index 000000000..47bc41442
--- /dev/null
+++ b/api/search.index/41b9c6e51390.js
@@ -0,0 +1 @@
+rn_("ZQBEAAAGexxyWBlZGVoZWxlcGV0ZXhkjgwKgYAAAGwljdCUAQQAAA3IZbuEMMRFYGAUBwAAAAYgNDT4dZXQFAcAAAAspGwOYHGF03wGFsAAaTwMlDGAC")
\ No newline at end of file
diff --git a/api/search.index/41fa2782e890.js b/api/search.index/41fa2782e890.js
new file mode 100644
index 000000000..f995fef1b
--- /dev/null
+++ b/api/search.index/41fa2782e890.js
@@ -0,0 +1 @@
+rn_("IUEAAHoc8hzzHAUBwAAAEMwWCBkBzRZkbwGBAqDQAAAdW6EwAAAdj2FwpwEDhqBQAAAZVbBwG20AAaDAAAAc8TRBEPWfDQAAAQCqCh4B+AA=")
\ No newline at end of file
diff --git a/api/search.index/423d6a733d07.js b/api/search.index/423d6a733d07.js
deleted file mode 100644
index 346c3f540..000000000
--- a/api/search.index/423d6a733d07.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQADoEAAAB0esEAbkAABoAAAABgqZm1zOzAAAAEAABoADABFEQAAwhIAAMgWAACpFw4A9xgAAPkYAAADGQAAORsAAMgbAAD0GwAAch0AAKUdAQA=")
\ No newline at end of file
diff --git a/api/search.index/42f101f1f307.js b/api/search.index/42f101f1f307.js
new file mode 100644
index 000000000..f7412fb5b
--- /dev/null
+++ b/api/search.index/42f101f1f307.js
@@ -0,0 +1 @@
+rn_("IUUAAHYZhxqIGjFFAABFG0YbRxtIG3UBRAAABy4bAMsWb3MsES0RSBJJEkoSARlUG3sdBQBAAAADcRxqZxwlAEMAABEuHUkdZR0bUx1UHfMFAmxz9fwVAABbAtgBAQAGAQUBwAAABLkdBlMbY3TXBgCHoEAAABzmoLAAABzLExESOjAAAAEAAAAAAAkAEAAAAIAO3A7dDs4ThheHF4gXiReKFzgd")
\ No newline at end of file
diff --git a/api/search.index/4314dada667c.js b/api/search.index/4314dada667c.js
new file mode 100644
index 000000000..3a0e2b107
--- /dev/null
+++ b/api/search.index/4314dada667c.js
@@ -0,0 +1 @@
+rn_("FQBEAAAGvx1kcB2wHUMAA6CAAAAdILCQGYcA0GNlbDowAAABAAAAAAAQABAAAAAKCQsJyQrKCssKzArPC9ALLQ2nDagNqQ21DiwS0xcMG5od")
\ No newline at end of file
diff --git a/api/search.index/43948c0ba024.js b/api/search.index/43948c0ba024.js
new file mode 100644
index 000000000..c19f22027
--- /dev/null
+++ b/api/search.index/43948c0ba024.js
@@ -0,0 +1 @@
+rn_("BQBFAAAGdBxiYBgFAEcAABZiHWMdZnMcE4MCoDAAABphcHMbAqBwAAAbyWFlCQKhAAAAHU2gsAAAHQ1hb0sDoEAAABxYoKAAAByYY3F0BQBJAAAGTB12yBsFAcAAAAYmHQFbHDNxBQHAAAACjxsE7hxpb0cChIagMAAAHJagIAAAHFqgcAAAHN2gMAAAHJfAiAMjgQKgYAAAG8ZjdBcPAIigkAAAG8eg8AAAHT6hQAAAHXUMkRYBkw0AACMAAqBAAAAdo2ZnOjAAAAEAAAAAAA0AEAAAAD0aPho/GkAaQRpCGkMaYRyVHJocnRxQHcAdwR0=")
\ No newline at end of file
diff --git a/api/search.index/4427d35f93ff.js b/api/search.index/4427d35f93ff.js
deleted file mode 100644
index 28ee34a7e..000000000
--- a/api/search.index/4427d35f93ff.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAUgRuCG20bGvMCAWnyEhkAAAEAFQBBAAAU+Bz5HG3CHMMc8wcBafWsGwAANwABAA4BbQAFAcQAAAEbGwpaHWlu+wNjb3A1AEMAAAE0HWniHEsdVh2DHROIAqAwAAAc43N0BQHAAAAK1RwHfxthaQUBwAAABVUaBhobY2wVAEUAAAakHWRzHaEdE4MDoMAAAB0PoDAAAB1SZm5zZyoAi7BgGhkAAaBgAAAaVqEAAAAdELCAG0oAAaDgAAAdKaAwAAAXpuS4BzswAAABAABDABQA5AoHABwNAABgDSIAABgAAFEYAAD2GAAAeBkAACEaAADUGwAAohwAAKscAAAbHQAAIR0AACQdAABgHQAAnh0AAKQdAACwHQEAtR0EALwdAgBFAkAAAAbzGhQhEcMWGmEbYhthb3bcCiUNlQ2IF5MYJQBAAAAFEBljkQ7dDt4OBQHBAAAARBEhFR1THVQdZW/7hBEIBA==")
\ No newline at end of file
diff --git a/api/search.index/444480dca065.js b/api/search.index/444480dca065.js
new file mode 100644
index 000000000..33b7680ed
--- /dev/null
+++ b/api/search.index/444480dca065.js
@@ -0,0 +1 @@
+rn_("FQBFAAAIIB1jDBuaHQUBwAAAAhsZFmcYOBpichsCoEAAABzPYW/zAAJ0dfc5EQAAhwEBAAEAvwYBAIgBVQBAAAAFMhtlCBcJFxkZGhkvGzAbGwKwYBszAAFmdBsCoGAAABp0ZW8FAcAAABHhCrcWEicNjBdhdQEAA6BAAAAdJLBAG5YAAaAAAAAYL2ZtczswAAABAAAUAAYArRcOAD4bAADOGwAA+hsAAHgdAACrHQEAGwKwAAkECStkbgUBwQAAAwsbEoAYKxtydQUAQAAABBcYdQMJGwOgsAAAHTygMAAADpBxcngFAEEAAAa8HWSlHROJAqBAAAAdgm1vSwOgIAAAFragMAAAHGBiZ2yXOwCMoDAAABlloEAAAB0GoCAAABcHoIAAAB2moCAAABuuNylHOjAAAAEAAAAAABMAEAAAAG0BbgFvATAElQ7hDuIO4w7kDuUO7RbuFqsXrBfqF5AaZRwQHXEdnh0=")
\ No newline at end of file
diff --git a/api/search.index/44739a3d1f11.js b/api/search.index/44739a3d1f11.js
new file mode 100644
index 000000000..6e66efd6f
--- /dev/null
+++ b/api/search.index/44739a3d1f11.js
@@ -0,0 +1 @@
+rn_("BQHAAAABrg4KvxtlaQUBRAAAB1kcB3EdY3PWGwEBAbAAEiIAAXM7MAAAAQAAFAAJACINAACoDgUAkRgBAJkYAQDOGAEA9BgBAJQaAQDTGwEApBwBAEsDoEAAAB1doIAAABs4Y2x0ZQBEAAAGvR1kWBpZGkMbRBtWHVcdqB3zBQFj8hwXAAABABsCoCAAABavZW8FAEQAAAPKG3f7FQUBwAAAA8YTQFUNVg1XDVgNWQ1hZfsCcnQ7A7CQHX0AEGFydQUAQQAABrwdZKUdE4wCoEAAAB2CbW8FAcUAAASDGwXfG3Fz+wJhbxUASQAABCQdZqsdrB0VAEkAAAakHWSvG2QdFQBMAAAGtx1kIx2ZHRUATAAABrYdZCIdmB37AmFp5wEBhaCAAAAc2QQwBvScDAAAbwoBAL4AJQBGAAADvhtmtRhkG2UbOwOgEAAADJ1laW8VAEIAAAPXF2EgEiESS4SgsAAAHFigYAAAGYW [...]
\ No newline at end of file
diff --git a/api/search.index/44bbf3906cda.js b/api/search.index/44bbf3906cda.js
deleted file mode 100644
index ace663359..000000000
--- a/api/search.index/44bbf3906cda.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBDAAAGvh1ktB3zAgFvAdsWAAATAISgQAAAGCewkB1YAAGgEAAAHRoRQQDy9wwAAI0AIUYAAHcYeBhTHAUAQgAAM/Yb9xvcHPocbBAZKwKwwB2NAAFjZisCsDAXBwABbW7rhKAwAAAYpgFABQ==")
\ No newline at end of file
diff --git a/api/search.index/44d3f9c6f6a4.js b/api/search.index/44d3f9c6f6a4.js
new file mode 100644
index 000000000..6d3a029f7
--- /dev/null
+++ b/api/search.index/44d3f9c6f6a4.js
@@ -0,0 +1 @@
+rn_("BQHAAAAW8xr0GgVzHWZoIwACoHAAABqGaXQBjBwAAAUARgAAEOQbAh1ykxsxQAAARRtGG0cbSBsFAEoAAAYfHXZFHQUARQAADLIdYeUcI4ECoKAAABz1YXMlAEAAABMqGCsYaW4YbxhfGUFCAAAyETMR3hawG1sdBQHDAAAGYB0AKRhtc7UBQQAAFG4cbxwA3RZtc5QOVxJYElkSWhJbElwScBlxGSAbThtPGwUBwAAABXAYEicYKBh1eecuAMqgwAAAHbKgcAAAGRawYBhxAxHAQKgbOzAAAAEAACsADgDuCgIA4gwWAA0RAwDhEwEATxgAAC8ZAQByGgEAoBsAANIbAABYHAAA5RwAAPUcAAAEHQAAXR0AADsDoCAAABvGYWVvJQBCAAAFFRljkw7fDuAOKwKhEAAAHXNhdQUAQQAADIwcci8J5woAiaDAAAAduaCQAAAberAACtwM8aAwAAAdcw2wBzowAAABAAA [...]
\ No newline at end of file
diff --git a/api/search.index/456792f13705.js b/api/search.index/456792f13705.js
new file mode 100644
index 000000000..0b6a3edf0
--- /dev/null
+++ b/api/search.index/456792f13705.js
@@ -0,0 +1 @@
+rn_("BQLAAAAF0RwOOx0Y/hsBHWVpbUUAQwAAA7gcaT0R4xbkFuUWKhsFAcMAAAqhHQ2xHWV0IwQCoGAAABzhYnABgxkAABUAQAAABnkaYjwRYRrzgQJudBMAA6BgAAAdcaBwAAAbkGNucjswAAABAAAHAAIAjhcGACYdAAAFAcAAAATfGwJ9GXB1BQHBAAAygxuEG5gbexwWdxp4GmVpY4EDoOAAAB03Y3FzBQHAAAA1ghz6HGIdYx0MbB1hafMEAWb0gRgAAPID2gAoADFGAACEGQ8bEBsTHfOCAnB2BQHEAAARgRz5HAUhHWVyEwcCoCAAABp2YnLzfhgAAAEA7AAFAcAAABmRHAgdZDIYMxg0GDUYNhg3GDgYY3h1AUAAAAIhGhZmHcMdYWSwFuUbXh1fHY4dlR2WHbUdIUYAAHwYfRhZHAUBwAAAEwsXDBc3/Bv9G+IcAB1tbmsDoDAAABirYW9yBQHBAAAW0xyxHQT [...]
\ No newline at end of file
diff --git a/api/search.index/45bb8f495d11.js b/api/search.index/45bb8f495d11.js
deleted file mode 100644
index 260c203ed..000000000
--- a/api/search.index/45bb8f495d11.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AYECsUAdjwABsPAdWAABZ3MVAUsAAAcyHQUDHWJmiBuRHQUBwAAAAHYdBmoZZXQFAcMAAAxCHQ94HWNm+4QRQQA=")
\ No newline at end of file
diff --git a/api/search.index/45ed9800dfa0.js b/api/search.index/45ed9800dfa0.js
new file mode 100644
index 000000000..847c2ed88
--- /dev/null
+++ b/api/search.index/45ed9800dfa0.js
@@ -0,0 +1 @@
+rn_("AQADoEAAABissGAcmwABgBglNQABZnBzOzAAAAEAABAABgAQGAAAMhoAAHcaAQBbGwAApBsFAPAbBQAbAqAAAAAOp3R2")
\ No newline at end of file
diff --git a/api/search.index/462707ecf27f.js b/api/search.index/462707ecf27f.js
deleted file mode 100644
index ff602ab45..000000000
--- a/api/search.index/462707ecf27f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAH6xoDVhplcAUARQAABw4dc2AbKwKgMAAAGjBtdAGFA6BAAAAcZqFAAAAdqaCAAAAdJmNlbBsCsGAcXAABbnTzAANhZXMBsh0AAA==")
\ No newline at end of file
diff --git a/api/search.index/462b3e59487f.js b/api/search.index/462b3e59487f.js
new file mode 100644
index 000000000..74abba722
--- /dev/null
+++ b/api/search.index/462b3e59487f.js
@@ -0,0 +1 @@
+rn_("BQBFAAAGdBxiYBgFAEcAABZiHWMdZnMcE4MCoDAAABphcHMbAqBwAAAbyWFlCQKhAAAAHU2gsAAAHQ1hb0sDoEAAABxYoKAAAByYY3F0BQBJAAAGTB12yBsFAcAAAAYmHQFbHDNxBQHAAAACjxsE7hxpb0cChIagMAAAHJagIAAAHFqgcAAAHN2gMAAAHJfAiAMjgQKgYAAAG8ZjdBceAImgkAAAG8egAAAACp+g8AAAHT6hQAAAHXUckRYBkw0AAA==")
\ No newline at end of file
diff --git a/api/search.index/462bc38f2b92.js b/api/search.index/462bc38f2b92.js
deleted file mode 100644
index 50a956db7..000000000
--- a/api/search.index/462bc38f2b92.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBFAAAGbhxiWxgFAEcAABZcHV0dZm0cE4MCoDAAABpccHMbAqBwAAAbw2FlCQKhAAAAHUegsAAAHQdhb0sDoEAAABxSoKAAABySY3F0BQBJAAAGRh12whsVAEwAAAa4HWR5HacdYUMAAJ4XnxegF6EXohejF6QX+wJhZvMAAXQBnQoAAAUBwAAABiAdAVUcM3EFAcAAAAKJGwToHGlvRwKEhqAwAAAckKAgAAAcVKBwAAAc16AwAAAckcCIAyOBAqBgAAAbwGN0Vx4AiaCQAAAbwaDwAAAdOKFAAAAdbxyRFgGRDQAA")
\ No newline at end of file
diff --git a/api/search.index/4637e723a4a3.js b/api/search.index/4637e723a4a3.js
deleted file mode 100644
index 955f551dc..000000000
--- a/api/search.index/4637e723a4a3.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQJGAAAhfxiAGEcaAhoZEhsZHBlpbHIPF0gYSRj6GPsYuRy6HLUBQAAANiAbrRwYHYIdBUQdYmPHExYXFxd9F34XARmNGo4aLBvmHOccER0jAgKwIBenAAFucgEXEQAAFQBMAAAA5xtzmRu8HPsCZWkFAFEAAAa1HWScHQUAWAAABr4dZLQd84cCcnZRRQAAvRa+Fr8WwBbBFsIWJQFHAAAW5hvMHAKFGWJy4xfyGHYbBQJBAAAUgB2BHQJ2HQbJG3BydsQbUUMAADUSNhI3EjgSORI6EvsCbnQFAEQAAAdrHXPQGyOCA7BwG14AAaBgAAAbAW10dSsCoLAAABs0b3IFAcAAAAZ1GxbiF7kbaHL3FwDKsFAT2wABMfxie2wuAEm0HDswAAABAAA+AAIA9AM7AKkNAgA=")
\ No newline at end of file
diff --git a/api/search.index/463b8906f099.js b/api/search.index/463b8906f099.js
deleted file mode 100644
index e5b7a0abd..000000000
--- a/api/search.index/463b8906f099.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAGchxiZBhIGUMAA6BAAAAX2qBwAAAZeWVtdwEmDQAAFQBAAABQfRt+G5IbdRzUHIwddHcdhx0FAcAAABVWG1cbAhobYW/VAEcAAASdHWY4GjkaOho7GjwaPRo+GlscjxyUHJccSh26HbsdGwKgYAAAG79jdAUARAAAA28cbr4XBQHAAAAFVRsWHRtRG2xuBQHAAAADiR1TRhhHGP8aABthG2IbbHUFAsMAAAhuHQKuHAhbHWN1dyMEAqBgAAAbh2JwAfMWAAAhRwAAFR1THVQd+wJsdPsCYW/zAIc0oAY7MAAAAQAAEQAHAAoJAAC0CgAAuxMBACwYAACHGQUAeRoFAJAcAAA=")
\ No newline at end of file
diff --git a/api/search.index/464185940b13.js b/api/search.index/464185940b13.js
new file mode 100644
index 000000000..42c4ce6f2
--- /dev/null
+++ b/api/search.index/464185940b13.js
@@ -0,0 +1 @@
+rn_("ZQBEAAAGmBtyHhgfGCAYIRgiGCMYJBgFAcsAAASSHQWdHXFzEwQCoGAAABzacHI7MAAAAQAADQACAIkaBgATGwYAYwADsIAbJAHxZ3N0OzAAAAEAAMsAAwDzEsgAVBoAAMAbAQA=")
\ No newline at end of file
diff --git a/api/search.index/465ee27903f6.js b/api/search.index/465ee27903f6.js
deleted file mode 100644
index 6c1b19b57..000000000
--- a/api/search.index/465ee27903f6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAUNRuzHAK6E2VpYUEAAIEYghiDGGsaFhsoG6gd8wACaXP0bRsAAAEACwEzACsCoLAAAB1tdHlHAACFoGAAABcLoJAAABzWoGAAAB2osFAbhQABHBAC8gMIAADPDw==")
\ No newline at end of file
diff --git a/api/search.index/46e5d58c7881.js b/api/search.index/46e5d58c7881.js
deleted file mode 100644
index ecdb226d9..000000000
--- a/api/search.index/46e5d58c7881.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("RQBAAAAWsB2xHWQcHR0dfB2SHZMdFQBKAAAGsR1kHR2THQUBwQAAB70bA38bZXDzgQJpcgUARAAAAcccabwb8wYBZvP+FwAAewHnABUASwAABrAdZBwdkh0rAqCQAAAc1XB4+4QRAQI=")
\ No newline at end of file
diff --git a/api/search.index/471601f0ebf8.js b/api/search.index/471601f0ebf8.js
deleted file mode 100644
index 212950bab..000000000
--- a/api/search.index/471601f0ebf8.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUMAAO0X7hdyGd0bBQFBAAAPqR0SXhpfGmNyXBghQgAATxIuGy8bVwEAhbBQGScAAbCgHL8AAQBBB/VYDQAAAQABAAEAkg0=")
\ No newline at end of file
diff --git a/api/search.index/4780b39a16e9.js b/api/search.index/4780b39a16e9.js
deleted file mode 100644
index 35590c04c..000000000
--- a/api/search.index/4780b39a16e9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUEAAEMZRBlaHPFGAAAYGRkZcRyjHKQcpRymHKccqBypHKocsBy0HLUcIh1+HQUARgAAAGEcczEbI4ECoCAAABgrYWQrArBAGHUAAW9ydwAAhaBgAAAdB7BAGjEAASRQBDowAAABAAAAAAAKABAAAAApDSoNmQ2aDaQNXxgFGQwZDRn9HH0dEwACoCAAAA0sZWzyeQEAAAEA")
\ No newline at end of file
diff --git a/api/search.index/47d3558a5530.js b/api/search.index/47d3558a5530.js
new file mode 100644
index 000000000..f5ab4ba54
--- /dev/null
+++ b/api/search.index/47d3558a5530.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHDB0S2xNsGW95cUQAAKobqxusG60b9hv3G/gb+RtXAAHFsGAZaQABoEAAABgxoKAAAB1GAAggGjowAAABAAAAAAAIABAAAAD2CvcK+AoCDQMNBA1EETASUBg=")
\ No newline at end of file
diff --git a/api/search.index/47fca8062c2c.js b/api/search.index/47fca8062c2c.js
deleted file mode 100644
index ba475b779..000000000
--- a/api/search.index/47fca8062c2c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQPCAAAXYhxjHAOEHTKUGJUYyRjKGBKWGJcYaGpzeWUBQgAAFqscpB1Wfhx/HIAcgRz1HPYcZHZ6F3sXfBcAGYwacx2hHSsCPUhoEcvcZW0rAqDgAAAdNm9yAQIAOzAAAAEAAMoAAgCDDgAASxHJAGFAAADUDJkYmhibGJwYnRieGAUARQAABoIdYhEdFQBBAAAExBxmlR2WHRUAQgAABOQcZpkdmh37AmFvIUUAAFcarRuuG9MBhLAwG7oAAQCoEPWlFwAA4QF8AdQBAwBFAEIAAANvHG6pFr4X5xfoFzsb+wNlbHhFAEQAABicHJ0cZCwRTBJNEv0YLRsbAqDQAAAdeHJ0BQBBAAAUgRuCG20bGvMCAWnyEhkAAAEAFQBBAAAU+Bz5HG3CHMMc8wcBafWsGwAANwABAA4BbQAFAcQAAAEbGwpaHWlu+wNjb3A1AEMAAAE0HWniHEsdVh2DHROIAqAwAAAc43N0BQH [...]
\ No newline at end of file
diff --git a/api/search.index/484dcb04ebd5.js b/api/search.index/484dcb04ebd5.js
new file mode 100644
index 000000000..b09073a77
--- /dev/null
+++ b/api/search.index/484dcb04ebd5.js
@@ -0,0 +1 @@
+rn_("cUAAAMAWKBopGioaKxosGi0aLhoFAcEAAATaHBUsG7UccXMFAcsAAASSHQWdHXFzYUUAAP0a/hr/GgAbARsCGwMbJwcCh6DAAAAc3rBAGQ4AAaBwAAAbKxGhAzswAAABAAAkAAgAIxEBADUSAwC2GAYAMxkGAIkaBgATGwYAQhsAAFAbAQAbAqAwAAAdMmFl")
\ No newline at end of file
diff --git a/api/search.index/486b9596bdc8.js b/api/search.index/486b9596bdc8.js
new file mode 100644
index 000000000..7eef7dd17
--- /dev/null
+++ b/api/search.index/486b9596bdc8.js
@@ -0,0 +1 @@
+rn_("MUgAAEsdTx1hHWkdMUIAAHIcgBy0HL4cBQHAAAAMsR0Nlx1haA8Hh6CAAAAda6CAAAAddKFQAAAduaCgAAAdoR4AHA==")
\ No newline at end of file
diff --git a/api/search.index/48a18daae99a.js b/api/search.index/48a18daae99a.js
deleted file mode 100644
index f56420604..000000000
--- a/api/search.index/48a18daae99a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAASFxkBHRkKHZgdaW8TAAOwMBo/AvqwMBpAAAFmaXA6MAAAAQAAAAAADgAQAAAA3hZyGHMYXxlpGmoaaxtzG5sc3RzeHCMdLx0wHWgdI4ICoDAAABliZnMrAqCgAAAby2Z0")
\ No newline at end of file
diff --git a/api/search.index/48c16e193cf0.js b/api/search.index/48c16e193cf0.js
deleted file mode 100644
index 2036cf855..000000000
--- a/api/search.index/48c16e193cf0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("wUEAAIkO0xfUF10aHhsfGyMbKRvGG8cb2xsPHRAdFQBCAAAEOB10IhE8EgUCQAAAF7obuxsXTxtQGwQDG2ZsdK0O+wNlaW8=")
\ No newline at end of file
diff --git a/api/search.index/49307c1ab539.js b/api/search.index/49307c1ab539.js
new file mode 100644
index 000000000..0fb37502a
--- /dev/null
+++ b/api/search.index/49307c1ab539.js
@@ -0,0 +1 @@
+rn_("MUYAAI0cjhyPHJAcZQBBAAAWeBy3HGLSF2kYrhivGAwZTRmSG/OCAmV0BQHGAAAE8RwCRh1pbmsDoCAAABs/ZWly")
\ No newline at end of file
diff --git a/api/search.index/49a2938b242d.js b/api/search.index/49a2938b242d.js
deleted file mode 100644
index 8fad75d44..000000000
--- a/api/search.index/49a2938b242d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFDAAAHMh0FAx1iZogbkR0FAEYAAAUkHXJyGzFHAAAyG9Ec0hwzHfMDAmZsOzAAAAEAAAcAAgA7EQAA6BIGACUARQAABc8cYQ4Xuxe8F3uEsEAaRAABIYAE")
\ No newline at end of file
diff --git a/api/search.index/4a38fa58cfcd.js b/api/search.index/4a38fa58cfcd.js
deleted file mode 100644
index bf1d81703..000000000
--- a/api/search.index/4a38fa58cfcd.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("dQFCAAABTBsEjBxpczUZNhlQGlEamxvhG+IbyhwFAEIAAAKuHW2jHSOHAqCAAAAdsmFrYwIDoKAAAB2oYWNr8wEWAAABAO4G")
\ No newline at end of file
diff --git a/api/search.index/4af7eba12020.js b/api/search.index/4af7eba12020.js
new file mode 100644
index 000000000..6549a5d1d
--- /dev/null
+++ b/api/search.index/4af7eba12020.js
@@ -0,0 +1 @@
+rn_("BQBFAAAGtxxiDBkFAcEAAAINGQILGWJ08wABdPQhEQAAEgEBAFUGRQFCAAAkXhxfHCwdBZIbY3fbF9wXvhi/GMsbKwKgQAAAGjFlaQUBRAAAD68dEmMaZBpjcmEYBQHAAAAjRhlHGWwcCeMbYW+3DACIsDAX2gSToHAAABploDAAABjANJgS9Y4OAAABADQAJgnUAA==")
\ No newline at end of file
diff --git a/api/search.index/4b21e1346ebc.js b/api/search.index/4b21e1346ebc.js
deleted file mode 100644
index f289c6d44..000000000
--- a/api/search.index/4b21e1346ebc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("VQBCAAADshxpOREaEt8W4BbhFiUbFQBFAAAFRB1j5hznHFUAQAAAVJ8YoBihGKIYoxikGHQeDYMNdRl7GX8agBpRRQAAmRiaGJsYnBidGJ4YBQBFAAAGgh1iER0VAEEAAATEHGaVHZYdFQBCAAAE5BxmmR2aHfsCYW8hRQAAVxqtG64b8wMDbHB384YZAAB8AdQBBQBCAAAE9RtjUhsjgQKgIAAAGKVlbCMAA6DwAAAdoaCAAAAbr2VmcvMdDQAADhACAPMAhSiAEjswAAABAAAHAAIA0QoAAKcMBgCbhKCgAAAbgKBAAAAdaRBBQA==")
\ No newline at end of file
diff --git a/api/search.index/4b7123a411e9.js b/api/search.index/4b7123a411e9.js
new file mode 100644
index 000000000..49295d7cc
--- /dev/null
+++ b/api/search.index/4b7123a411e9.js
@@ -0,0 +1 @@
+rn_("BQBGAAAFKh1yeBsxRwAANxvXHNgcOR31AEYAAAmDHXJfGD0ZPhk/GUAZQRlCGUMZORuEHIUchhyHHPsc/BwFHQUBwAAAARwRAiEbZXljAAOwYByxAPlkdHb3fhcAAAEAAQCFAYwB6AIuAAUASwAAGIYdhx13ZBz7Amx0cwCEoDAAABPKIUgAOzAAAAEAAAcAAgA/EQAA7BIGAA==")
\ No newline at end of file
diff --git a/api/search.index/4ba1c6eb15b9.js b/api/search.index/4ba1c6eb15b9.js
deleted file mode 100644
index 273dc3b94..000000000
--- a/api/search.index/4ba1c6eb15b9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUEAAHQc7BztHAUBwAAAEMgWAxkByRZkbwGBAqDQAAAdVaEwAAAdiWFwpwEDhqBQAAAZULBwG2cAAaDAAAAc6zRBEPWdDQAAAQCnCh4B+AA=")
\ No newline at end of file
diff --git a/api/search.index/4bb4f809c6df.js b/api/search.index/4bb4f809c6df.js
deleted file mode 100644
index e2abbf5f2..000000000
--- a/api/search.index/4bb4f809c6df.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUoAAIcciByJHIocFQBFAAARqxvxHGkYGmAcGwKwkBy5AAFlaQUCRgAAIcgb9BtyHQaUHQigHWlzdIsaFQBBAAAUaBxpHG1IG0kbEwQCoCAAABuqaXL3KhkAAAEAQgEBACwBMgAyAfsCY24xRQAAFBoVGhYaFxoFAcMAADNEG0UbRhtHGwUZG3Bz8wDFAAiAGQHTDAAA")
\ No newline at end of file
diff --git a/api/search.index/4c4bd6a7ad1c.js b/api/search.index/4c4bd6a7ad1c.js
deleted file mode 100644
index a5bfc07aa..000000000
--- a/api/search.index/4c4bd6a7ad1c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUYAAFEZUhl6GxMAA6BgAAAbe6CAAAAds2JvcjowAAABAAAAAAATABAAAADXDNgM2QzaDNsM3AzdDN4M7RbcF1QYbhlvGVcarRuuG1Yc6BwoHUMdUUwAAH4cfxyAHIEc9Rz2HDsDoLAAABzLZnJ0")
\ No newline at end of file
diff --git a/api/search.index/4ce16870d6f3.js b/api/search.index/4ce16870d6f3.js
deleted file mode 100644
index 3363c24e1..000000000
--- a/api/search.index/4ce16870d6f3.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFIAAAHMh0FAx1iZogbkR0xSgAApBulG6YbpxsFAcIAAFKFGIYYhxiIGIkYihhUhxmIGYkZihmLGYwZa3ZRSgAAnhufG6AboRuiG6Mb44GEsEAXEgABIBgC+wJldA==")
\ No newline at end of file
diff --git a/api/search.index/4d53a67f92d1.js b/api/search.index/4d53a67f92d1.js
new file mode 100644
index 000000000..5c4ae18af
--- /dev/null
+++ b/api/search.index/4d53a67f92d1.js
@@ -0,0 +1 @@
+rn_("BQBEAAAGdxxmZBgrA6AQAAAWrrAgE78AAWVvciUAQQAABrsdZLcOvhOiHUsDsGAYwgABoCAAABySY3R6TwGFsEAbOgF/sEAW7wABoLAAAB0GMCEE")
\ No newline at end of file
diff --git a/api/search.index/4e1768cb7da7.js b/api/search.index/4e1768cb7da7.js
deleted file mode 100644
index f72be21c6..000000000
--- a/api/search.index/4e1768cb7da7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("NQFDAAAXkxxBHQB/F2ZzrRauFq8WsBYFAEAAAANrHGphHCUAQwAAESgdQx1lGBtNHU4d8wECbHP1+BUAAFoC2AEBAAYBOwOgEAAADodhZnTzAAFp9NgTAAABADAFAQAhSgAAUBpRGpsb+wJjdA==")
\ No newline at end of file
diff --git a/api/search.index/4e5dbb7f5b33.js b/api/search.index/4e5dbb7f5b33.js
deleted file mode 100644
index 6e572a895..000000000
--- a/api/search.index/4e5dbb7f5b33.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("NQBFAAAWsB2xHWQcHR0dkh2THQEGADswAAABAAAfAAEAzxgfAAUAQQAABrYdZJ8dE4ICoEAAAB18bW/7AmlvBQBFAAAGcRxmXxgFAEIAAAa1HWScHfsCaXQFAcEAABBeGl8aCYEZZnN1AUIAAAFMGwSMHGlzNRk2GVAaURqbG+Eb4hvKHAUAQgAAAq4dbaMdI4cCoIAAAB2yYWtjAgOgoAAAHahhY2vzARYAAAEA7gYVAEIAAAflHG3NF6gYI4ECoDAAABodYmszAQOgAAAADKZlaW/yXw0AACYAAYMCoNAAAB13oQAAAB2HY3AFAEgAAAdrHXPQG/MCAmZ386kNAAABAAEAFQBEAAAGuR1kah2qHQEDAaAwAAAYzmo7MAAAAQAAyQACAC8NAAA9EMgAAQOEoEAAABlooHAAABmAoDAAABjNoJAAABszAgMCOzAAAAEAANQAAgAuDQAAaQ/TAAUBwAAABhodDakdbG4 [...]
\ No newline at end of file
diff --git a/api/search.index/4e9a8a22b663.js b/api/search.index/4e9a8a22b663.js
new file mode 100644
index 000000000..5d99aadd4
--- /dev/null
+++ b/api/search.index/4e9a8a22b663.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHDB0S2xNsGW95cUQAAKobqxusG60b9hv3G/gb+RtXAADFsGAZaQABoEAAABgxoKAAAB1GAAggGjowAAABAAAAAAAIABAAAAD2CvcK+AoCDQMNBA1EETASUBgFAEIAABLTHLEdYdAK+wJrdA==")
\ No newline at end of file
diff --git a/api/search.index/4ef2f689927a.js b/api/search.index/4ef2f689927a.js
new file mode 100644
index 000000000..a7c295537
--- /dev/null
+++ b/api/search.index/4ef2f689927a.js
@@ -0,0 +1 @@
+rn_("UUMAAMITwxPEE8UTGBcZFwUASgAAFHYddx1tVR0VAEYAABQYHRkdbe8cch0zgQOg0AAAHVBmcHOrhKAwAAAYlqAgAAAdshEBCA==")
\ No newline at end of file
diff --git a/api/search.index/4efd675cba52.js b/api/search.index/4efd675cba52.js
deleted file mode 100644
index c9f54753b..000000000
--- a/api/search.index/4efd675cba52.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAGth1knx0TjAKgQAAAHXxtbwUBxQAABH0bBdkbcXP7AmFvFQBJAAAEHh1mpR2mHRUASQAABp4dZKkbXh0VAEwAAAaxHWQdHZMdFQBMAAAGsB1kHB2SHfsCYWkFAcAAAAdMHSJnGGgYOhtveSMCArBgGmQCIGx0OzAAAAEAAAYAAwAqEQEARxIDAAYYAAAVAEEAABPTF10aYRwSHRLHDwCIoIAAABzToGAAAB25HDEGOjAAAAEAAAAAAAoAEAAAAJwKmgwHFwgXxhf3HGodjR2OHakdqh0=")
\ No newline at end of file
diff --git a/api/search.index/4f670ad2aaee.js b/api/search.index/4f670ad2aaee.js
deleted file mode 100644
index acecaee9b..000000000
--- a/api/search.index/4f670ad2aaee.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBRAAAGvR1krx0xRAAAwRjCGGwaFxsFAEIAAAa8HWStHfMAAW0BBhEAAAUBwAAAERsZHBkIfR1lb3FBAADkFuUWfxiAGEcaTRqrG/EcBQBKAAAGtR1knB0hRAAAdBlkHMYcZQBEAAAGtx1kUxpUGj0bPhtQHVEdoh1n8wCMoDAAABjxoMAAAB2IoCAAABkasDAbbAH4tikXOjAAAAEAAAAAACgAEAAAACgNQxIPFxEXGBcZF0gYSRhaGG0Y+hj7GDgZORk6GTsZPBk9GT4ZghkYGlIaJBs0G3cbwRvJG2Acfhx/HIAcgRy5HLocwRzLHOEc9Rz2HP8cRh0=")
\ No newline at end of file
diff --git a/api/search.index/4fa71004b595.js b/api/search.index/4fa71004b595.js
deleted file mode 100644
index 60eb7ea93..000000000
--- a/api/search.index/4fa71004b595.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("NQBAAAAj4BdhGWUddAwYDRhDGEQY9QBDAAASdBubHXWdDp4Onw6gDv0W2RdYGlka6hrrGh0bURuDG70bKh03HQUBQwAABmcdAgQdYnJ9HCOHAqBAAAAcvWZzOwOgcAAAGPxhb3IFAcAAABENEcMTCY8bbnQFAEQAAACdG3M3GwUDwAAACNsbBHsZAzERMP4ImAqZCvMaZGxyeBUARgAAFrQctRxmDBkNGQUATwAABn4dZv0cYwADoFAAABxWbHJzAQcdAAArAqEwAAAdMWJs9wUAyaCAAAAY/aAwAAAREaBgAAAdRkBMoAs7MAAAAQAA5QASAFsBAgB+AckAPgQAAFMEAABeBAcAywcAAOQIAQDGCgAAFhEAAHcXAACRFwAAvRcAAAQYAQB7GAAAjhgAAAEbAAAmGwAAwhsAAA==")
\ No newline at end of file
diff --git a/api/search.index/508fc30e78f7.js b/api/search.index/508fc30e78f7.js
deleted file mode 100644
index 590d2b6b6..000000000
--- a/api/search.index/508fc30e78f7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHDAAAKmx0Nqx1ldCMGAqBgAAAc22JwAX4ZAADzBQFjASAdAAAFAsEAAALREwLSEwP+FmttdAUBwAAADHkcCWwaY3P7AmVzBQHFAAAJ3BwKAh1jZUsDoCAAABiQoFAAABqAYWVpBQHAAAAEkA4OQx1vcgUCyAAAApUbCUgdCmQdYWVzSwOgkAAAGmugwAAAG5RjbHPnGADJgAMXDRBSoHAAABb9oOAAABx4oFAAABEtQgegAzowAAABAAAAAAAHABAAAAAWABcAGAAZAB0AVAFVAVoB")
\ No newline at end of file
diff --git a/api/search.index/5098ad7843ba.js b/api/search.index/5098ad7843ba.js
deleted file mode 100644
index 8248b1dcf..000000000
--- a/api/search.index/5098ad7843ba.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAADcRsAfRhhcwUBwwAAFz0dPh0SnhyfHGRzUwADoFAAABvPZm1u8g0XAACtADUAQAAAASQNcIsKsQ6yDicYdQFCAAABTBsEjBxpczUZNhlQGlEamxvhG+IbyhwFAEIAAAKuHW2jHSOHAqCAAAAdsmFrBQHAAAAA0Q4JqB1sd3MChKAAAAAbewUEAvTgCgAAIQsBAO4GFQBCAAAH5RxtzReoGCOBAqAwAAAaHWJrZQFDAAAIqx0DHBpiZPoV+xX8Ff0V/hX/FQAWtwYAh6DQAAAdkaAAAAAMppFBwPJfDQAAJgA=")
\ No newline at end of file
diff --git a/api/search.index/50c062d86cb6.js b/api/search.index/50c062d86cb6.js
new file mode 100644
index 000000000..95555592e
--- /dev/null
+++ b/api/search.index/50c062d86cb6.js
@@ -0,0 +1 @@
+rn_("BQBEAAADdRxuwhcFAcAAAAOPHVNLGEwYBBsFG2cbaBtsdSFIAAAbHVkdWh37AmFvVwAAhaBgAAAbW7BgG1wAAbAAHX0AEDSAAjswAAABAAAOAAUADAkAALYKAAAxGAAAjBkFAH4aBQAbAqAwAAAYnWV0")
\ No newline at end of file
diff --git a/api/search.index/50f54c5f52b4.js b/api/search.index/50f54c5f52b4.js
new file mode 100644
index 000000000..613f46d19
--- /dev/null
+++ b/api/search.index/50f54c5f52b4.js
@@ -0,0 +1 @@
+rn_("BQHAAAA1ghz6HGIdYx0MbB1haRMAAqAwAAAb3mZsOjAAAAEAAAAAAAgAEAAAAIEYFhl1GeQbcxzdHAIdTR11HfMAAXIBkxsAAA==")
\ No newline at end of file
diff --git a/api/search.index/5101c540a4d6.js b/api/search.index/5101c540a4d6.js
new file mode 100644
index 000000000..22d063287
--- /dev/null
+++ b/api/search.index/5101c540a4d6.js
@@ -0,0 +1 @@
+rn_("BQBDAAADuBxpKhsjBAKgcAAAHXVwdPRlGAAA5QABAAEAIUIAABQYihl2GgUAUgAABsIdZLMdFQBAAAAAyxxz+xYTGGUARQAABScdcmYaXhtfG2AbYRtiG2Mb84ECY2cVAEIAAAHNHGlZG8IbGwKwEBjBAv1lbBsCoIAAAB1daXIlAE0AAAa9HWRWHVcdqB0FAcMAAAMOHRD6GvsabnPzgQJsbQUBxAAAMewbgRzSHPkcBSEdZXL3CwKIoHAAAB0UJogHOzAAAAEAACoAFADEDg4AzhcBANQXAQDnFwAAAxgAAAwYAwB+GAEAkBgAALQYAQD3GAAAaxkAAH4ZAABlGgAAZBsCAHwbAAD+GwAAkRwAAOscAAABHQAACB0AABsCoCAAABPPYWQ=")
\ No newline at end of file
diff --git a/api/search.index/51599a541302.js b/api/search.index/51599a541302.js
new file mode 100644
index 000000000..70ac647c0
--- /dev/null
+++ b/api/search.index/51599a541302.js
@@ -0,0 +1 @@
+rn_("NQBAAAAj5BdmGWsddBEYEhhIGEkY9QBDAAASehuhHXWfDqAOoQ6iDgEX3RddGl4a7xrwGiIbVxuJG8MbMB09HQUBQwAABm0dAgodYnKDHCOHAqBAAAAcw2ZzOwOgcAAAGQFhb3IFAcAAABEREccTCZUbbnQFAEQAAACjG3M8GwUDwAAACOEbBIAZAzURMAAJmgqbCvgaZGxyeBUARgAAFrocuxxmERkSGQUATwAABoQdZgMdYwADoFAAABxcbHJzAQ0dAAArAqEwAAAdN2Js9wUAyaCAAAAZAqAwAAARFaBgAAAdTEBMoAs7MAAAAQAA5QASAFsBAgB+AckAPgQAAFMEAABeBAcAywcAAOYIAQDICgAAGhEAAHsXAACVFwAAwRcAAAkYAQCAGAAAkxgAAAYbAAArGwAAyBsAAA==")
\ No newline at end of file
diff --git a/api/search.index/5174d1df84f7.js b/api/search.index/5174d1df84f7.js
deleted file mode 100644
index 9ea074b7d..000000000
--- a/api/search.index/5174d1df84f7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQKEoEAAABlooHAAABmAoDAAABjNoJAAABszAgMCOzAAAAEAANQAAgAuDQAAaQ/TAAUBxAAAAxwbBv8cdHYFAUMAABH3GoIcA4sbaW4tEvsDaW9y")
\ No newline at end of file
diff --git a/api/search.index/51afc4d5b000.js b/api/search.index/51afc4d5b000.js
deleted file mode 100644
index f6f03c872..000000000
--- a/api/search.index/51afc4d5b000.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("JQBAAAAz1hO4F2IYMxp3sRaAHYEdtQFCAAAHehkGGR1hdq0YrhhkGWUZLhovGlYbVxuVHJYcPx1AHQUBxQAAKBUdUx1UHQSJHWFvBQHAAAAEZhsiThlPGeMcb3kVAEoAAAa5HWRqHaodBQHAAAACAR0JmB1pbxMIAqAwAAAdOWZp95scAABCAAEARQAMAAEAOAAhRQAAdB2FHYYdJQBAAAADmhxpdhx3HO4cIUIAAGIaYxoEHTFBAABjG2QbZRs0HQUBwAAAFXMcZx0CmRx1efMBhAIBAzowAAABAAAAAAAMABAAAABmGEkZShlLGUwZTRkNG5wbfRziHEsdVh2DHfsCZWzzAANwdHUBxRYAABUAQQAABY4bdxMYFBgVAEAAABRwHXEdbVQbTx37AmRuRQBEAAAAgxxzDhk0Gugb6Ru9HAUAQQAAJeUboByhHHf0GuccA8mggAAAHJigIAAAF9ugYAAAHSVATAULOzA [...]
\ No newline at end of file
diff --git a/api/search.index/51bb8dadb579.js b/api/search.index/51bb8dadb579.js
new file mode 100644
index 000000000..5a16d2293
--- /dev/null
+++ b/api/search.index/51bb8dadb579.js
@@ -0,0 +1 @@
+rn_("BQHAAAASHBkHHRkQHZ4daW8TAAOwMBpEAvuwMBpFAAFmaXA6MAAAAQAAAAAADwAQAAAA4hZ3GHgYZBluGm8acRt5G6Ec4xzkHCkdKx01HTYdbh0=")
\ No newline at end of file
diff --git a/api/search.index/51f45c5cbe91.js b/api/search.index/51f45c5cbe91.js
new file mode 100644
index 000000000..54b090525
--- /dev/null
+++ b/api/search.index/51f45c5cbe91.js
@@ -0,0 +1 @@
+rn_("BQHEAAARgRz5HAUhHWVyEwUCoCAAABp2YnL21BcAAAEAqQABADUAtwABAQOgQAAAGKywYBybAAGAGCU1AAFmcHM7MAAAAQAAEAAGABAYAAAyGgAAdxoBAFsbAACkGwUA8BsFAPMAAm509EUbAAABAAEAAQA=")
\ No newline at end of file
diff --git a/api/search.index/52350204cd35.js b/api/search.index/52350204cd35.js
deleted file mode 100644
index 86e331882..000000000
--- a/api/search.index/52350204cd35.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAACkBgFgBphZQUBwQAAAo8YBX8aYWVrA6AAAAAOmzEyMwEBAbBAHGoAUWU6MAAAAQAAAAAANgAQAAAAMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYN4RcBGAIYAxhZGGsY/hj/GFEZUhlzGXAadBogGyIbMBt6G4cbkxvWG+YbbhxwHHIccxx7HK0csRzMHNsc8xwYHWcdgh2TAASgUAAAHRugYAAAGI5lcnV2OzAAAAEAABYAAQAUCRYA")
\ No newline at end of file
diff --git a/api/search.index/525337b0a737.js b/api/search.index/525337b0a737.js
deleted file mode 100644
index 2e39f25b5..000000000
--- a/api/search.index/525337b0a737.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQJGAAAhfxiAGEcaAhoZEhsZHBlpbHIPF0gYSRj6GPsYuRy6HBUATQAAAOcbc5kbvBwFAFEAAAa1HWScHQUAWAAABr4dZLQd84cCcnYVAUcAABbmG8wcAoUZYnLjF/IYzwXHsHAX4gPXoMAAABs0sFAT2wABAAmkDAUBwQAABIwdBZcdcXNDAAOgYAAAHZ6gYAAAG8tkb3I7MAAAAQAAJwARAIcNAQDKFg0AbhgDAA8ZAABdGQEAfxkAABMaAABLGgAAZRoDAHYaAAAKGwEAaRsBAKkbAADgGwAAvhwAAA0dAABeHQAANQFAAAAXkxxBHQB/F2ZzrRauFq8WsBY1AkEAABFFEfcYBVMYFZIYeBtpcnPPCtAKvxfAF/UAQAAABc8XddUKuAy5DLoMuwy8DL0Mvgy/DMAMwQzBF8IXnRuwG4McMUMAAHcZixtvHNUcBQHBAAAFsBsGjhxmbjUAQAAABC4dcGcbaBuTHEE [...]
\ No newline at end of file
diff --git a/api/search.index/52e5efadbb8d.js b/api/search.index/52e5efadbb8d.js
deleted file mode 100644
index 6cc335ba7..000000000
--- a/api/search.index/52e5efadbb8d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHIAAAHNx0DKR1lcGUAQAAABS0bZaANBBcFFxQZFRkqGysbsUEAAPAKExGfGKAYoRiiGKMYpBiFG4Yb0BwxHb8AhaAwAAAYU7BgGy4AAWEABg==")
\ No newline at end of file
diff --git a/api/search.index/530c1082d131.js b/api/search.index/530c1082d131.js
deleted file mode 100644
index 32be1683f..000000000
--- a/api/search.index/530c1082d131.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBHAAAYgB2BHXdeHAUBwAAAlbEbshuzG7QbtRu2G7cbvxzAHDYdBh4bbnQVAEQAAAQFHWWXG5gbBQHGAAAHhB0FaR1mdJMAhLDQHU0AAaBQAAAdtTUAAAEFCQAAJQBEAAAGuB1kgRp5HacdtwQAh7AwErsKU4AT0wAT+LAAF+oAAYoBBzswAAABAAB9AQ4A/QcAALEKAAC1DgAAMhECAFkSYQC6EwAA8BYBABoXWgBIGgEAkRpXAPkbVwCHHAMAUh0AAJwdAAA=")
\ No newline at end of file
diff --git a/api/search.index/5315997ab1b6.js b/api/search.index/5315997ab1b6.js
deleted file mode 100644
index c4ac24f7c..000000000
--- a/api/search.index/5315997ab1b6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAVPxlAGQjdG2xuAYIDoVAAAB2zoCAAABy4oIAAAB1jZHV3KwKgIAAAHSlvckMEA6BgAAAbk7BwHSoADWJlcAH8FgAAUUIAAEEZQhlYHFkcZhwmHfsCY3T7AmFv")
\ No newline at end of file
diff --git a/api/search.index/533847b03806.js b/api/search.index/533847b03806.js
deleted file mode 100644
index b33cec79d..000000000
--- a/api/search.index/533847b03806.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("NQBCAAAWsB2xHWQcHR0dkh2THQUBwQAAAewXApMYYXUrA6BQAAAW9aBAAAAW72JzdrUBQAAAFGgcaRwA2RZtc5IOUxJUElUSVhJXElgSaxlsGRsbSBtJG98AxaAgAAAbj6CQAAAYYQACCgo=")
\ No newline at end of file
diff --git a/api/search.index/53eb28fa8aa1.js b/api/search.index/53eb28fa8aa1.js
new file mode 100644
index 000000000..370f6bcdd
--- /dev/null
+++ b/api/search.index/53eb28fa8aa1.js
@@ -0,0 +1 @@
+rn_("AQUCsBAbsQFGoJAAAB2DaXI7MAAAAQAAEgAJAF8YAAA9GQYAHRoAADkbAAB9GwAAZhwAAIQcAwD7HAEABR0AACsDoDAAABgxsJAcvwABYWVp")
\ No newline at end of file
diff --git a/api/search.index/5416cb260373.js b/api/search.index/5416cb260373.js
new file mode 100644
index 000000000..2c5f8bcc6
--- /dev/null
+++ b/api/search.index/5416cb260373.js
@@ -0,0 +1 @@
+rn_("1QBCAAADBxltQRFCEYcbiBuWG5cbbhxvHP4c/xwYHRkddh13HRUBRQAAA8sbAIkYbHPpF70Y+wJudBsDoKAAABzLoAAAABonYWVz")
\ No newline at end of file
diff --git a/api/search.index/542a08962218.js b/api/search.index/542a08962218.js
new file mode 100644
index 000000000..979618e9d
--- /dev/null
+++ b/api/search.index/542a08962218.js
@@ -0,0 +1 @@
+rn_("JQBCAAAQzBjNGHPUDCwZLRklAUAAAAXgFwXhF3J35QrXDNgMGwKgAAAADQVueAUBwAAACl0cEoAOOB1jcvsDZWlz")
\ No newline at end of file
diff --git a/api/search.index/54353f94d3f5.js b/api/search.index/54353f94d3f5.js
deleted file mode 100644
index 9f2191307..000000000
--- a/api/search.index/54353f94d3f5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAGth1knx0TiAKgQAAAHXxtbwUBQAAABiAdAVUcM3HFHBUARAAAA9gbbHAZ1xwxSAAARR1JHVsdYx0xQgAAbBx6HK4cuBwFAcAAAAyrHQ2RHWFoDweHoIAAAB1loIAAAB1uoVAAAB2zoKAAAB2bHgAc84ECcHYrAqAgAAAdKW9yBQHAAAACiRsUVBjoHGlvBQHBAAAM0xwDJhltboFGAAD+GP8YIhswG4cbkxvWG3Ac2xw3VACMsHAdKgANoDAAAByQoCAAABxUsBAaSgMkoEAAABiRoDAAAByRoIAAAB0U1qkTOjAAAAEAAAAAABcAEAAAABYNFw1IDUkNSg1LDUwNTQ1ODU8NUA1RDckT1RPzFvcW/BYOGF0YXhh+GRkaGhoEG3UARQAABSEdcmEaWBtZG1obWxtcG10b0xv7AmNnBQBDAAAGvh1ktB3zAAFvAdsWAAD7A2xvcg==")
\ No newline at end of file
diff --git a/api/search.index/5488e4537421.js b/api/search.index/5488e4537421.js
deleted file mode 100644
index f597cc5ee..000000000
--- a/api/search.index/5488e4537421.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUQAAI0ZjhmUG9wbBQBRAAAGvR1krx0JAqBQAAAbgKEwAAAddWNyBQHEAAAoFR1THVQdBIkdYW/7AmFlIUIAAE4ZTxnjHAUBwAAAMsEYwhhsGhcbA2Yba3BFAkEAABUnGSgZGr8cwBwz7RfuF3IZ3Rtvc3RYDVkNWg1bDe0aGwOgIAAAHTiwEBcLAUFuc3gFAcQAAAHsFwKTGGF1vwGFoAAAAAkAkUBAFQBIAAAGuR1kah2qHSOBAqBwAAAaE2VtBQHAAAACAR0JmB1pbxMHAqAwAAAdOWZp95scAABCAAEARQAMAAEAOAAbArAwG0MBi2FyIUUAAHQdhR2GHSUAQAAAA5ocaXYcdxzuHCFCAABiGmMaBB0xQQAAYxtkG2UbNB0FAcAAABVzHGcdApkcdXnzAYQCAQM6MAAAAQAAAAAADAAQAAAAZhhJGUoZSxlMGU0ZDRucG30c4hxLHVYdgx37AmVsBQBCAAAGvB1 [...]
\ No newline at end of file
diff --git a/api/search.index/54d2ad51feff.js b/api/search.index/54d2ad51feff.js
deleted file mode 100644
index 3f0b77702..000000000
--- a/api/search.index/54d2ad51feff.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBGAAAGnh1kqRteHTUAQAAAE+oX6xdpvxjAGPUa9hoFAEMAAADpF3MIHWMAA7AQGT8AAWluc/JQGQAAOQQVAEQAAAa5HWRqHaodIwMCoIAAAB0aY2z3Kw0AAHoAAQABACgKOAONAgUCwgAAApUbCUgdCmQdYWVzKwKgEAAAGFZpbysCoGAAABoTZXLVAEIAAASdHWY4GjkaOho7GjwaPRo+GlscjxyUHJccSh26HbsdZwcAiLBwGkQAAaBwAAAaXaEQAAAddhMxBfbqCAAA1QBVEAEAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/54e948199776.js b/api/search.index/54e948199776.js
new file mode 100644
index 000000000..6d983dbe2
--- /dev/null
+++ b/api/search.index/54e948199776.js
@@ -0,0 +1 @@
+rn_("QUIAANIY0xhxHG8dih0hQQAAehzyHPMcBQHAAAAQzBYIGQHNFmRvAYECoNAAAB1boTAAAB2PYXAFAEYAABDkGwIdcpMb8wMBcAH+FgAAGwKgQAAAGVVhb7cBAoawcBttAAGgwAAAHPE0QRD1nw0AAAEAqgoeAfgA+wJlcw==")
\ No newline at end of file
diff --git a/api/search.index/54fd963627ee.js b/api/search.index/54fd963627ee.js
new file mode 100644
index 000000000..84927c07a
--- /dev/null
+++ b/api/search.index/54fd963627ee.js
@@ -0,0 +1 @@
+rn_("tQFCAAAEQRsDuBxmaT0RHhLjFuQW5RYCF2wYbRgqG0AbgB2BHRUARAAABngcYmkYTRkrAqAgAAAbP2VyFQFAAAAZGRkaGSh3GHgYZBludMwYzRg1AEUAABa2HbcdZCIdIx2YHZkdBQBBAAAGvB1kpR0TgwKgQAAAHYJtb2sDsDASVAcbYXR3FQBBAAAGpB1krxtkHSsCoBAAAB0rY2UJAqAAAAANoqEAAAAdPWZz64Sg4AAAHTkRAUBRSAAAcxh0GHUYdhhiGWMZBQHIAAAo4xzkHCkdCnAddHX7AmFyAQUAOzAAAAEAAIQAAgBaGAAAlBmDADFCAAA2Gjca9hoIG0cCAIaggAAAG9egMAAAHW+gYAAAHVKgMAAAG64BDgwBDBEAAGFIAAC2GLcYuBi5GLoYuxi8GAUARAAAAc0cacIb8wYBZvIDGAAAewEbAqCwAAAbw2VpUUcAAAMXBBcFFwYXLRguGAUBwAAAUYQ [...]
\ No newline at end of file
diff --git a/api/search.index/551648d9c792.js b/api/search.index/551648d9c792.js
deleted file mode 100644
index 663811978..000000000
--- a/api/search.index/551648d9c792.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("RQBBAAAU+Bz5HG3DGMQYxRjCHMMcBQBFAAAEuxxlcBobAqAgAAAbCHV5MwSEsCAX3gABoEAAABsJAgEDOjAAAAEAAAAAAAsAEAAAADcR3BbdFscXyBcdGawbyhvjG+Qb8hxfHQUBwAAAEzYRTBoEAx1pchUBQQAABGkZBEIab3SJF4QbxwEAhqBwAAAdMqCAAAAYdLDwHTsAATpAAjowAAABAAAAAAAHABAAAAD+B1UaVhoaG38biBspHZEd")
\ No newline at end of file
diff --git a/api/search.index/556703d0d512.js b/api/search.index/556703d0d512.js
new file mode 100644
index 000000000..326dc0e46
--- /dev/null
+++ b/api/search.index/556703d0d512.js
@@ -0,0 +1 @@
+rn_("IUEAAEgZSRlgHPFGAAAdGR4ZdxypHKocqxysHK0crhyvHLActhy6HLscKB2EHQUARgAAAGccczYbI4ECoCAAABgwYWQrArBAGHoAAW9ydwAAhaBgAAAdDbBAGjYAASRQBDowAAABAAAAAAAKABAAAAArDSwNmw2cDaYNZBgKGREZEhkDHYMdEwACoCAAAA0uZWzyeQEAAAEA")
\ No newline at end of file
diff --git a/api/search.index/5598b638e7e4.js b/api/search.index/5598b638e7e4.js
new file mode 100644
index 000000000..77fa7c4e1
--- /dev/null
+++ b/api/search.index/5598b638e7e4.js
@@ -0,0 +1 @@
+rn_("IUIAAPsX/Bf9FxUARQAABUodY+wc7RwFAEkAAAaIHWIXHVOFA6AAAAAZemZzd/OBAmRpBQHBAAAF9hoXiBmJGWVpEwACoAAAABvFYXP1tg4AAD0IhwDZA/sBbwDFsBAW6gJSoBAAAA6yfaZGR9i4QAIAig==")
\ No newline at end of file
diff --git a/api/search.index/55abde78f386.js b/api/search.index/55abde78f386.js
new file mode 100644
index 000000000..4553e5f9c
--- /dev/null
+++ b/api/search.index/55abde78f386.js
@@ -0,0 +1 @@
+rn_("BQHAAAAH8BoDWxplcAUARQAABxQdc2YbKwKgMAAAGjVtdAGFA6BAAAAcbKFAAAAdr6CAAAAdLGNlbBsCsGAcYgABbnTzAANhZXMBuB0AAA==")
\ No newline at end of file
diff --git a/api/search.index/55b9c5664ff5.js b/api/search.index/55b9c5664ff5.js
deleted file mode 100644
index ad554cda9..000000000
--- a/api/search.index/55b9c5664ff5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("JQBBAAAIghxilw56GXkbNQFCAABRgRiCGIMYaxoWGygbFTUbsxxpc20bbht5HKwc8wACa28BeBwAACMAAqBwAAAbym9zOzAAAAEAAAcAAgC8FgAAIxoGAAUBwQAABNQcFScbrxxxcwUBygAABIwdBZcdcXMrAqAgAAAaWmFy1QBEAAAEnR1mOBo5GjoaOxo8Gj0aPhpbHI8clByXHEoduh27HRUARAAABmAdZKwW3xubhLAwEQ0CtqBgAAAbJglACCUAQQAAEgkZChllvxLAEsESBQHAAAADMxtk+Br5Gvoa+xr8Gv0a/hpyeAUAUAAABr4dZLQdKwKwcBycAAFkcgUARQAABm4cYlsYBQBHAAAWXB1dHWZtHBODAqAwAAAaXHBzGwKgcAAAG8NhZQkCoQAAAB1HoLAAAB0HYW9LA6BAAAAcUqCgAAAckmNxdAUASQAABkYddsIbBQHAAAAGIB0BVRwzcQUBwAAAAok [...]
\ No newline at end of file
diff --git a/api/search.index/55ced655da83.js b/api/search.index/55ced655da83.js
new file mode 100644
index 000000000..468b99a16
--- /dev/null
+++ b/api/search.index/55ced655da83.js
@@ -0,0 +1 @@
+rn_("BQBRAAAGwx1ktR0hRAAAeRlqHMwcUwQDoMAAAB2OZWZ3AccbAAAlAEUAAAazHGIGGZIakxoFAcAAAAdAHQUtHWZ0BQHAAAAUBRmRGgaKHW9yBQBGAAAEcBxleBlXBQGHsPAdkwABsDAZMQABoFAAAB1vJoAWOjAAAAEAAAAAAAcAEAAAAIIOShFLEUwRwRi+G6IcoxwVAEIAAAHNHGlZG8Ib+wJlbFsDoIAAAB1daXJ1")
\ No newline at end of file
diff --git a/api/search.index/5677dd392451.js b/api/search.index/5677dd392451.js
new file mode 100644
index 000000000..f097a4e79
--- /dev/null
+++ b/api/search.index/5677dd392451.js
@@ -0,0 +1 @@
+rn_("BQHAAAAFzBMJXhphbQUBwAAACV0aCiIbY2wJAqBQAAAbhqEwAAAde2NyBQHAAAADjx0TBBsFG2x1IUgAABsdWR1aHfOCAmFvBQBBAAAH9hph8xbzgQJpdfcAAIagwAAAG4mhIAAAHTDREAEBpw4AAA==")
\ No newline at end of file
diff --git a/api/search.index/56a3edff093e.js b/api/search.index/56a3edff093e.js
deleted file mode 100644
index 92058e287..000000000
--- a/api/search.index/56a3edff093e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUEAAE8SLhsvGzUBQwAAF5McQR0Afxdmc60WrhavFrAWMUAAAEURwhL3GPkYBQBAAAADaxxqYRwlAEMAABEoHUMdZRgbTR1OHWMBA6AgAAAbv2lsc/X4FQAAWgLYAQEABgH/AIWgEAAADocpQAQ=")
\ No newline at end of file
diff --git a/api/search.index/56b12b83e4cc.js b/api/search.index/56b12b83e4cc.js
deleted file mode 100644
index 150147844..000000000
--- a/api/search.index/56b12b83e4cc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUUAAM4XqRiqGBUARgAABr0dZIgdrx3zgQJldxUAQgAAFMgcHx111Rd2GTFFAACNGY4ZlBvcG7uEsAAaQwEuACAL")
\ No newline at end of file
diff --git a/api/search.index/56b7b1bc47dd.js b/api/search.index/56b7b1bc47dd.js
new file mode 100644
index 000000000..1cc267006
--- /dev/null
+++ b/api/search.index/56b7b1bc47dd.js
@@ -0,0 +1 @@
+rn_("BQHAAAA1ghz6HGIdYx0MbB1hafMEAWb0gRgAAPID2gAoADFGAACEGQ8bEBsTHfOBAnB2FQBBAAAEyhxmmx2cHbUAQgAABOocZhoSGxIcEh0SMRkyGUobSxtMG00bnx2gHfsDYW9y")
\ No newline at end of file
diff --git a/api/search.index/56caaabea43d.js b/api/search.index/56caaabea43d.js
new file mode 100644
index 000000000..f917e52cd
--- /dev/null
+++ b/api/search.index/56caaabea43d.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHUh0ibBhtGEAbb3kFAcAAABVpGoocBF0caXljAAOgcAAAGGZkbHQ6MAAAAQAAAAAACgAQAAAAsg4uES8RSxJMEk0SThILGCoZaxyFHQEEADswAAABAAClAAIAyBMBAAcWowD7AmFl")
\ No newline at end of file
diff --git a/api/search.index/56e45ba31605.js b/api/search.index/56e45ba31605.js
deleted file mode 100644
index 11c7b65b2..000000000
--- a/api/search.index/56e45ba31605.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQUAOzAAAAEAAKUAAgDEEwEAAxajABUAQwAAICAYbxtwG3NyGnMaFQBAAAAE4Bxi2g7bDvOBAmRt+wJydhUARQAABnIcYmQYSBlDAAOgQAAAF9qgcAAAGXllbXcBJg0AAFFBAAB9G34bkht1HNQcjB3VAEcAAASdHWY4GjkaOho7GjwaPRo+GlscjxyUHJccSh26HbsdGwKgYAAAG79jdPsDbnN0MUEAAKEOEhjIHB8dIUIAAPYX9xf4FxUARQAABUQdY+Yc5xwFAEkAAAaCHWIRHVOFA6AAAAAZdWZzd/OCAmRp84ECaXT7A2FlaQ==")
\ No newline at end of file
diff --git a/api/search.index/56eba6638bdc.js b/api/search.index/56eba6638bdc.js
deleted file mode 100644
index 14681941f..000000000
--- a/api/search.index/56eba6638bdc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAGth1knx0ThgKgQAAAHXxtbwUATAAABn4dZv0cGwKgIAAAHSRvdcsEsIAblgFCoKAAABzgYXFzdBsCoDAAABkEZW8=")
\ No newline at end of file
diff --git a/api/search.index/56ee6b9131c6.js b/api/search.index/56ee6b9131c6.js
new file mode 100644
index 000000000..5fb82580d
--- /dev/null
+++ b/api/search.index/56ee6b9131c6.js
@@ -0,0 +1 @@
+rn_("BQHEAAAoGx1ZHVodBI8dYW8bAqBgAAAbhmFlBQLAAAADPh0EbBsiUxlUGekcZW95FQBKAAAGvx1kcB2wHQUBwAAAAgcdCZ4daW8TBwKgMAAAHT9mafehHAAAQgABAEUADAABADgAGwKwMBtJAYthciFFAAB6HYsdjB0lAEAAAAOgHGl8HH0c9BwhQgAAZxpoGgodMUEAAGkbahtrGzodBQHAAAAVeRxtHQKfHHV58wGEAgEDOjAAAAEAAAAAAAwAEAAAAGsYThlPGVAZURlSGRIbohuDHOgcUR1cHYkd+wJlbPMAA3B0dfXJFgAAcgMBAEUBbACFAUIAAAFSGwSSHGlz3xc6GTsZVRpWGqEb5xvoG9AcFQBBAAAFlBt3GBgZGBUAQAAAFHYddx1tWhtVHfsCZG4xSAAAKBvMG80bFh1FAEMAAACJHHMTGTka7hvvG8McKwKgQAAAG5VhaQUAQAAAJesbphynHHf5Ghs [...]
\ No newline at end of file
diff --git a/api/search.index/57773545999e.js b/api/search.index/57773545999e.js
new file mode 100644
index 000000000..0c4da35fa
--- /dev/null
+++ b/api/search.index/57773545999e.js
@@ -0,0 +1 @@
+rn_("BQHBAAAClRgFhRphZQUBwQAAApQYBYQaYWVrA6AAAAAOnTEyMwEBAbBAHHAAUWU6MAAAAQAAAAAANgAQAAAANA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgN5RcGGAcYCBheGHAYAxkEGVYZVxl4GXUaeRolGycbNRuAG40bmRvcG+wbdBx2HHgceRyBHLMctxzSHOEc+RweHW0diB2TAASgUAAAHSGgYAAAGJNlcnV2OzAAAAEAABYAAQAWCRYA")
\ No newline at end of file
diff --git a/api/search.index/57aaad342e7e.js b/api/search.index/57aaad342e7e.js
deleted file mode 100644
index 935d22d23..000000000
--- a/api/search.index/57aaad342e7e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHTB0iZxhoGDobb3kFAcAAABVkGoQcBFccaXnzAQJsdDowAAABAAAAAAAJABAAAAAqESsRRxJIEkkSShIGGCUZZRx/HQ==")
\ No newline at end of file
diff --git a/api/search.index/581a6ed66a1f.js b/api/search.index/581a6ed66a1f.js
new file mode 100644
index 000000000..0c276b29c
--- /dev/null
+++ b/api/search.index/581a6ed66a1f.js
@@ -0,0 +1 @@
+rn_("BQBBAAAUhxuIG20gGvMCAWnyFxkAAAEAFQBBAAAU/hz/HG3IHMkc8wcBafWyGwAANwABAA4BbQAFAcQAAAEgGwpgHWlu+wNjb3A1AEMAAAE6HWnoHFEdXB2JHROIAqAwAAAc6XN0BQHAAAAK2xwHhRthaQUBwAAABVoaBh8bY2wVAEUAAAaqHWR5HacdE4MDoMAAAB0VoDAAAB1YZm5zZyoAi7BgGh4AAaBgAAAaW6EAAAAdFrCAG1AAAaDgAAAdL6AwAAAXquS4BzswAAABAABDABQA5goHAB4NAABiDSIABRgAAFYYAAD7GAAAfRkAACYaAADaGwAAqBwAALEcAAAhHQAAJx0AACodAABmHQAApB0AAKodAAC2HQEAux0EAMIdAgBFAkAAAAb4GhQlEccWGmcbaBthb3beCicNlw2MF5gYJQBAAAAFFRljkw7fDuAOBQHBAAAASBEhGx1ZHVodZW/7hBEIBA==")
\ No newline at end of file
diff --git a/api/search.index/593a7b58fe6d.js b/api/search.index/593a7b58fe6d.js
deleted file mode 100644
index 547eb39dd..000000000
--- a/api/search.index/593a7b58fe6d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("UUUAAHEZghqDGuUboByhHCUAQQAABRAZY5EO3Q7eDhsCoEAAABX5bHAFAsAAAAfqHB/RHNIcA0IaaXJ5AQYAOzAAAAEAAK8AAgCRGlcA+RtXACUASwAABJ0dZkoduh27HfsCcXIxRAAAPxtAG0EbQhs7A6CAAAAbOWNlbgUAQQAAJHcaeBqvG2PfEwUATgAABr4dZLQd84ECcHcFAEEAABRwHXEdbU8dE4cCoKAAAB2JaXYbAqCAAAAb4GFyBQHAAAAKxRwAIhplcxUAQgAAB+Ucbc0XqBh1AUMAAAcpGwDHFm9zKBEpEUQSRRJGEvwYTht1HRsCoGAAABvbY3QVAEIAABQ4G/UbYyAaUhsFAcAAAAdiHQG3HGFvBQHEAAACmh0Blh1hbyOFAqAAAAAdLWRmBQHEAAAGix0Dex1vdBsCoOAAAB2maG83AgGIoDAAABzaoYAAAB27sEAdEgABoEAAAB0XoFAAAB0uLJg [...]
\ No newline at end of file
diff --git a/api/search.index/59a75dccd8b3.js b/api/search.index/59a75dccd8b3.js
deleted file mode 100644
index bd6f86a8c..000000000
--- a/api/search.index/59a75dccd8b3.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLGAAAClRsJSB0KZB1hZXMVAEAAABJAESwSdcsLzAsFAEQAAAawHGYFGQUAQwAABMgcddUX8wIBb/KKDgAApAP7A2hvciUAQQAACIIcYpcOehl5GzUBQgAAUYEYghiDGGsaFhsoGxU1G7McaXNtG24beRysHDFEAADBGMIYbBoXG2UARAAABrcdZFMaVBo9Gz4bUB1RHaIdUwEDsDAbbAH4Y2509ygNAADwCQEAVAEVAdAA0gBRQwAAvhO/E8ATwRMUFxUXBQBKAAAUcB1xHW1PHRUARgAAFBIdEx1t6RxsHTOBA6DQAAAdSmZwc1OBA6AgAAAdrGVpdVsDoBAAAA2bZ25vBQBAAAAC/hZ5yAwPCMigwAAAHKygIAAAE9GgIAAAE9KgYAAAF9mgoAAAG7+ggAAAGlqgkAAAGxcAAc0DBQHHAAABKBsFsxxpcxuEsBANmQABoIAAABrtoFAAABj4RBAC1w8AiKBQAAA [...]
\ No newline at end of file
diff --git a/api/search.index/5ad9189679c6.js b/api/search.index/5ad9189679c6.js
new file mode 100644
index 000000000..4739c8f31
--- /dev/null
+++ b/api/search.index/5ad9189679c6.js
@@ -0,0 +1 @@
+rn_("BQHDAAASFBdTGhPoFxoba24lAEEAAAiIHGKZDn8Zfxs1AUIAAFGGGIcYiBhwGhsbLRsVOhu5HGlzcxt0G38cshzzAgJrbwF+HAAA+wJlbw==")
\ No newline at end of file
diff --git a/api/search.index/5ae524aa29ca.js b/api/search.index/5ae524aa29ca.js
new file mode 100644
index 000000000..ed5f75d29
--- /dev/null
+++ b/api/search.index/5ae524aa29ca.js
@@ -0,0 +1 @@
+rn_("BQBAAAASahiFGXKeDUUCQQAAFSwZLRkaxRzGHDPyF/MXdxnjG29zdFoNWw1cDV0N8hpvAIWgsAAAHT6gIAAAHT6wEBcPAUJAICM=")
\ No newline at end of file
diff --git a/api/search.index/5b07109ce5bf.js b/api/search.index/5b07109ce5bf.js
new file mode 100644
index 000000000..d381b0042
--- /dev/null
+++ b/api/search.index/5b07109ce5bf.js
@@ -0,0 +1 @@
+rn_("FQBCAAAAThFzgw5NEfUARgAACYMdcl8YPRk+GT8ZQBlBGUIZQxk5G4QchRyGHIcc+xz8HAUdMUAAAP4M/wwLGR4bAQABoRAAAB18dPLsCAAA1QBbA6DAAAAbim1ycwUBwAAAARwRAiEbZXkFAEUAAAyyHWHlHPFAAACLDtcX2BdiGiMbJBsoGy4bzBvNG+EbFR0WHRsdWR1aHWsDoKAAABz1YXJzMUgAACgbzBvNGxYdJwABhbBAGYgAAaBQAAAdJ4AaOwARsaBAAAAdPlAABzswAAABAAAlABIAug4IACYRAABAEgAAAxcDAHkXAADmFwAALRgBAHwYAQBLGgAAZhoAAFUbAQBeGwUAnxsAAL8bAADYGwEAWRwAAMIcAAAPHQAABQHAAAAC+BoE9xpkZwUARAAAB00dcAoX8wABdAGLFwAABQBCAAADyht3+xX/AIUkvXdaX0IGYAIBAAKgQAAAHOqgoAAAHH5mczo [...]
\ No newline at end of file
diff --git a/api/search.index/5b69011b4156.js b/api/search.index/5b69011b4156.js
deleted file mode 100644
index 6275e2786..000000000
--- a/api/search.index/5b69011b4156.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAA1fBz0HFwdXR0MZh1hafMAAWb2fBgAAGIDjwCPAEsAKADzAwFyAY0bAAAFAcEAAASMHQWXHXFz8wYBcjowAAABAAAAAAAJABAAAAB/GWUaZhpnGmgaChsLG2kbahsNHfsCcHYVAEgAACA2Gjca5xtzmRu8HFFCAACZGJoYmxicGJ0Ynhj7AmZz+wJlbyUAQAAABMQcZrYclR2WHSsCoBAAABsacnMFAFEAAAa+HWS0HRMDAqCAAAAbymRzAScNAADFAEEAAATkHGYWEhcSGBIZEiwZLRlaGkQbRRtGG0cbmR2aHQUASgAABrkdZKodIUgAAC8dMB1oHSFDAAB2HHcc7hz7A3B0dSMEAqBgAAAdJW1zAWEdAAATgQKwIBtWAAFpbvsCcnT3AACFoAAAAAqoAUgD8lQEAAB1GA==")
\ No newline at end of file
diff --git a/api/search.index/5bc731ff79da.js b/api/search.index/5bc731ff79da.js
deleted file mode 100644
index 1d26f9b20..000000000
--- a/api/search.index/5bc731ff79da.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUkAAD8bQBtBG0IbMUMAAPYb9xvcHPoc8wACbHU6MAAAAQAAAAAAEQAQAAAAnAydDJ4MnwygDKEMogyjDKQMkA4aESMR7hZ1GHYYEBkmGUQd")
\ No newline at end of file
diff --git a/api/search.index/5bcbf5af4773.js b/api/search.index/5bcbf5af4773.js
new file mode 100644
index 000000000..7654eb507
--- /dev/null
+++ b/api/search.index/5bcbf5af4773.js
@@ -0,0 +1 @@
+rn_("IUEAAFMSMxs0GzUBQwAAF5kcRx0Agxdmc7EWshazFrQWBQBAAAADcRxqZxwlAEMAABEuHUkdZR0bUx1UHWMBA6AgAAAbxWlsc/X8FQAAWwLYAQEABgHfAIWwABFJB7OgEAAADokpQAQ=")
\ No newline at end of file
diff --git a/api/search.index/5bf2917e1328.js b/api/search.index/5bf2917e1328.js
new file mode 100644
index 000000000..15cb55ecc
--- /dev/null
+++ b/api/search.index/5bf2917e1328.js
@@ -0,0 +1 @@
+rn_("QUIAAOYXfBh9GL8bWRxlAEMAAAaEG3L0F/UX9hf3F/gX+Rf6FxsCoPAAAB05YXIFAEMAAAQlHXV7GfMEAW/y+BYAAAwBZQBIAAAG2hxyiRqKGosajBqNGo4ajxrHAQCFoKAAABvdoMAAABvgGCAF8qcMAACJCzsDoNAAABuKZWl1BQBAAAAQ3g6bG25cBBUAQAAACkIbdRUNFg2xQAAA8goXEaQYpRimGKcYqBipGIsbjBvWHDcdtQJBAAAmVhlXGYAbBoEbCLkdYm9y2QzaDNsM3AzdDN4M3wzgDPEW4BdzGXQZBQHAAAAPQB0IBxthZTcAAIWgMAAAEk+wMA7VAAGwYBucAUI4QEA7MAAAAQAACQADAFIEAADqBwcAiA4AAC8PyaBAAAAcfqAQAAAdg7CwG5wBQqAgAAAWyAATjgo=")
\ No newline at end of file
diff --git a/api/search.index/5bf9da0572b7.js b/api/search.index/5bf9da0572b7.js
new file mode 100644
index 000000000..2fbdbea64
--- /dev/null
+++ b/api/search.index/5bf9da0572b7.js
@@ -0,0 +1 @@
+rn_("FQBDAAAEixxmkB2RHXUAQAAAFP4c/xxt1A7IGMkYyhj5GPoYyBzJHBsCoBAAAA6RZG4FAEUAAATBHGV1GhsCoCAAABsNdXk3AAGFoBAAABvRsCAX4gABoEAAABsOAkEDOjAAAAEAAAAAABAAEAAAACUROxHHFuAW4RbJF8sXzBciGW4ZOhqyG9Ab6RvqG/gcZR0xRAAAGhgbGBwYHRgFAcAAAC96HYsdjB0nehzyHPMcYXIjBAOgEAAAHIywUBzWAGFlcHMB/xYAAPMAhBYBAPJxAQAAYxI=")
\ No newline at end of file
diff --git a/api/search.index/5c1499a45b28.js b/api/search.index/5c1499a45b28.js
deleted file mode 100644
index 9f7331dc5..000000000
--- a/api/search.index/5c1499a45b28.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAAC7hYMzhxmbgUBxAAAAfcYBXgbaXP7AmxvBQHFAAACThoDFRtrbhsCoLAAABvVY3UzAISgcAAAGPigcAAAGPkFAAb14AgAAAEAAQABAC8AKwKhcAAAHbthcw==")
\ No newline at end of file
diff --git a/api/search.index/5c182304eb9e.js b/api/search.index/5c182304eb9e.js
deleted file mode 100644
index 5c534832c..000000000
--- a/api/search.index/5c182304eb9e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("JQBFAAAGrRxiARmNGo4aBQHAAAAHOh0FJx1mdAUBwAAAFAAZjBoGhB1vcgUARgAABGocZXMZVwUBh7DwHY0AAbAwGSwAAaBQAAAdaSaAFjowAAABAAAAAAAHABAAAACADkYRRxFIEbwYuBucHJ0cFQBCAAABxxxpUxu8G/sCZWw=")
\ No newline at end of file
diff --git a/api/search.index/5c49eff9e606.js b/api/search.index/5c49eff9e606.js
deleted file mode 100644
index 66870acdb..000000000
--- a/api/search.index/5c49eff9e606.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAFWhoEGR1jcwUAQgAAAq4dbaMdI4cCoIAAAB2yYWsjDgKgoAAAHahhYwHwHAAAS4QdbMqg7LKgQAAAGYGgUAAAGjUYAANrA6AAAAAbgDFlaQ==")
\ No newline at end of file
diff --git a/api/search.index/5c8deb9e8cfc.js b/api/search.index/5c8deb9e8cfc.js
deleted file mode 100644
index d3a9ea28d..000000000
--- a/api/search.index/5c8deb9e8cfc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQCEoDAAABEVoDAAABEWoEAAABPGoHAAABhXABUBOjAAAAEAAAAAACEAEAAAAO0I7gjvCPAI8QjyCPMI9Aj1CPYI9wj4CI0KjgqPCpAKMRE8Eb0TzhPPE9oXZRh0GYAZgRmDGYQZMxtkHGocuxzGHAUd")
\ No newline at end of file
diff --git a/api/search.index/5c9dd7fb6370.js b/api/search.index/5c9dd7fb6370.js
deleted file mode 100644
index ee738d8d7..000000000
--- a/api/search.index/5c9dd7fb6370.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAFWhoEGR1jcwUAQgAAAq4dbaMdI4cCoIAAAB2yYWsjDgKgoAAAHahhYwHwHAAAS4QdbMqg7LKgQAAAGYGgUAAAGjUYAAP7AmVp")
\ No newline at end of file
diff --git a/api/search.index/5d0bdafa646b.js b/api/search.index/5d0bdafa646b.js
deleted file mode 100644
index 02b84fd13..000000000
--- a/api/search.index/5d0bdafa646b.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBRAAAGvR1krx0FAcQAACgVHVMdVB0EiR1hbxsCoGAAABuAYWUhQgAAThlPGeMcBQHAAAAywRjCGGwaFxsDZhtrcGsDoDAAAB04ZW95FQBKAAAGuR1kah2qHQUBwAAAAgEdCZgdaW8TBwKgMAAAHTlmafebHAAAQgABAEUADAABADgAGwKwMBtDAYthciFFAAB0HYUdhh0lAEAAAAOaHGl2HHcc7hwhQgAAYhpjGgQdMUEAAGMbZBtlGzQdBQHAAAAVcxxnHQKZHHV58wGEAgEDOjAAAAEAAAAAAAwAEAAAAGYYSRlKGUsZTBlNGQ0bnBt9HOIcSx1WHYMd+wJlbAUAQgAABrwdZK0d8wCEAJAM9gYRAAC/BXEDAQBEAWwABQHAAAAQGxkcGQMhHWZzGwKggAAAHX1lbyFDAABtGWwbZB2FAUIAAAFMGwSMHGlz2xc1GTYZUBpRGpsb4RviG8ocFQBBAAAFjht3Exg [...]
\ No newline at end of file
diff --git a/api/search.index/5d4a0518d001.js b/api/search.index/5d4a0518d001.js
deleted file mode 100644
index d3876bea5..000000000
--- a/api/search.index/5d4a0518d001.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAAQ3hv8HHKNG0MBhKEgAAAdbaAwAAAbwKCAAAAagQiQAjowAAABAAAAAAAKABAAAADoCCsJLAn6FqYYQRlCGVgcWRxmHCYd")
\ No newline at end of file
diff --git a/api/search.index/5d5267666bac.js b/api/search.index/5d5267666bac.js
new file mode 100644
index 000000000..b8613270f
--- /dev/null
+++ b/api/search.index/5d5267666bac.js
@@ -0,0 +1 @@
+rn_("BQBBAAAGxB1kuh0xSAAAkhmTGZob4hv7AmFlJQBBAAAhXBwuHUkdZR0bUx1UHZuEoGAAAByYsDARJQWiQQARBQBJAAAGHh1iMRsTgQKwUBlgAAFmdysCoCAAABp6Ym4FAcAAAAdbGAX4GnJ01wAAxqBAAAAdIKBAAAARQ7CgG2cAAUBEEAr23goAAEkCcABICa0ADAE=")
\ No newline at end of file
diff --git a/api/search.index/5d52f7120bc7.js b/api/search.index/5d52f7120bc7.js
deleted file mode 100644
index 750307818..000000000
--- a/api/search.index/5d52f7120bc7.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("gUIAAIsO1xOmF+0X7hdnGXIZHBvdGxUBRwAABzIdBQMdYmaIG5EdBQBBAAAGth1knx0TiwKgQAAAHXxtbysCoGAAAB0GbHQFAsAAADSHHIgciRyKHDAYEXQdhR2GHQjsGm5yc2UAQAAAB4obcooXixeMF40XjhePF5AXBQHBAAAEfRsF2Rtxc/ODAnJzvwOGoHAAAB2gEUFB")
\ No newline at end of file
diff --git a/api/search.index/5da5d53bec37.js b/api/search.index/5da5d53bec37.js
new file mode 100644
index 000000000..789d46797
--- /dev/null
+++ b/api/search.index/5da5d53bec37.js
@@ -0,0 +1 @@
+rn_("MUoAAPYb9xv4G/kbFQBAAAAUzhwlHXXZF3sZBQHCAABSJBklGSYZJxkoGSkZVH4afxqAGoEaghqDGmt2UUoAAPAb8RvyG/Mb9Bv1G+8BxbBAF+wAAQAIRgE=")
\ No newline at end of file
diff --git a/api/search.index/5dc786b49cf0.js b/api/search.index/5dc786b49cf0.js
new file mode 100644
index 000000000..6626054cf
--- /dev/null
+++ b/api/search.index/5dc786b49cf0.js
@@ -0,0 +1 @@
+rn_("BQLAAACLqRyqHKscrBytHK4crxywHCgdE9YcNx0IfhxvcnkxRAAAUhhTGFQYVRgFAcAAAAZRGgPIF3J1Dw7IoQAAAB1JsGAZcAABoBAAABPMsCAaTQABoGAAABxlBEU4Ag==")
\ No newline at end of file
diff --git a/api/search.index/5dcbb7c69ad8.js b/api/search.index/5dcbb7c69ad8.js
deleted file mode 100644
index 02c865435..000000000
--- a/api/search.index/5dcbb7c69ad8.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAGth1knx0TjAKgQAAAHXxtbwUBxQAABH0bBdkbcXP7AmFvFQBJAAAEHh1mpR2mHRUASQAABp4dZKkbXh0VAEwAAAaxHWQdHZMdFQBMAAAGsB1kHB2SHfsCYWnnAQGFoIAAABzTBDAG9JoMAABtCgEAvgBFAEYAAAO4G2awGF4bXxv4G/scFQBEAAAGuR1kah2qHSMCAqCAAAAdGmNs9ysNAAB6AAEAAQAoCjgDjQJ7hKAQAAAMmxFBAA==")
\ No newline at end of file
diff --git a/api/search.index/5e90fcbfa075.js b/api/search.index/5e90fcbfa075.js
deleted file mode 100644
index 609cc230c..000000000
--- a/api/search.index/5e90fcbfa075.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUIAAPYX9xf4FxUARQAABUQdY+Yc5xwFAEkAAAaCHWIRHVOFA6AAAAAZdWZzd/OBAmRpBQHBAAAF8RoXgxmEGWVpEwACoAAAABu/YXP1tA4AADsIhwDXA/sBbwDFsBAW5gJRoBAAAA6wawFgywzLQAIAig==")
\ No newline at end of file
diff --git a/api/search.index/5e91bf0815c0.js b/api/search.index/5e91bf0815c0.js
deleted file mode 100644
index e724a0525..000000000
--- a/api/search.index/5e91bf0815c0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAFERcZ+hj7GGVpBQBLAAAAnRtzNxsFA8AAAFQJEQoRCxEMEd0T3hMm6RbqFuYXJ8cXyBcdGRIODQ8NY25vcBUARAAAAIMcc+gb6RsTiAKgMAAAG5xmcwUARwAAAIQYc+UXIUsAAFAaURqbGwUBwAAAApodAZYdYW/zAwFw8oYZAAB8ASODAqAAAAAdLWRmNQBEAAAMSx1wURhgHb0dvh0FAEMAABR3GngaY98TBQBEAAAEOBtjIBozAAOgkAAAGzlmcnPy3AgAAO8K/wCFoKAAABs2KCggAYECoRAAAB1LoHAAABmGZmwVAEYAAAg6HXOcHJ0c13wAy6DAAAAbmrAwDpgAAaEAAAAcvkBPJA0BfQEAAA==")
\ No newline at end of file
diff --git a/api/search.index/5edaecc787dd.js b/api/search.index/5edaecc787dd.js
new file mode 100644
index 000000000..31c7837a8
--- /dev/null
+++ b/api/search.index/5edaecc787dd.js
@@ -0,0 +1 @@
+rn_("tQJAAAASFBdTGhPoFxobUEsYTBgEGwUbZxtoG2tucxoYGxgcGB0YfBp9Gj0btRv7G1cckxwGHQEDADswAAABAACEAAIAWhgAAJQZgwDLhLBAGAkAAWUTxcyJWwoBBA==")
\ No newline at end of file
diff --git a/api/search.index/5f2ebf596ab9.js b/api/search.index/5f2ebf596ab9.js
deleted file mode 100644
index eef722092..000000000
--- a/api/search.index/5f2ebf596ab9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAA09xyNHY4dqR1seB0FAEIAAAKuHW2jHSOFAqCAAAAdsmFrBQBFAAA09xyNHY4dqR1seB37AnJzMUMAADIb0RzSHDMddQFCAAABTBsEjBxpczUZNhlQGlEamxvhG+IbyhwhhwKggAAAHbIFYWtjAgOgoAAAHahhY2vzARYAAAEA7gYVAEIAAAflHG3NF6gYI4ECoDAAABodYmvzAwJlaQGFDQAAZQBCAAAGtx1kUxpUGj0bPhtQHVEdoh0bAqAwAAAXxmRtRQBAAAAHXxxzzArNCpkMKRL1FtUARQAABJ0dZjgaORo6GjsaPBo9Gj4aWxyPHJQclxxKHbodux1DAAOwgBycAAGgIAAAER5kbG71LBEAACABAQCwBjACrx+JoCAAAA6WoJAAABlvsUBN")
\ No newline at end of file
diff --git a/api/search.index/5f47221790f9.js b/api/search.index/5f47221790f9.js
new file mode 100644
index 000000000..b804f3bb5
--- /dev/null
+++ b/api/search.index/5f47221790f9.js
@@ -0,0 +1 @@
+rn_("AYMCoNAAAB19oQAAAB2NY3AFAEgAAAdxHXPWG/MBAmZ386sNAAABAAEAJQBCAAAOhR1jsBixGO4aW4SgoAAAGXSgIAAAHF0VQAA=")
\ No newline at end of file
diff --git a/api/search.index/5f6ae2d271a7.js b/api/search.index/5f6ae2d271a7.js
new file mode 100644
index 000000000..b2ce6fc4b
--- /dev/null
+++ b/api/search.index/5f6ae2d271a7.js
@@ -0,0 +1 @@
+rn_("BQHAAAADdxsAghhhcwUBwwAAF0MdRB0SpBylHGRzUwADoFAAABvVZm1u8hEXAACtADFAAACNCrMOtA4sGPsCeXplAEQAAAa9HWRYGlkaQxtEG1YdVx2oHfMFAWPyHBcAAAEAGwKgIAAAFq9lbwUBwAAAA0gaABAXYXMFAcAAAAQRG1A7GDwYPRg+GD8YQBhpcwUBwwAAFxEdEh0S0xvUG2RzBQBEAAADyht3+xUFAcAAAAPGE0BVDVYNVw1YDVkNYWX7AnJ0twcAiKAAAAARGbCQHX0AECE4DTswAAABAAATAAYAEQMEAD4RAADHEgQAmxcGAPAcAACmHQAA")
\ No newline at end of file
diff --git a/api/search.index/5ffabbdabc06.js b/api/search.index/5ffabbdabc06.js
deleted file mode 100644
index 53a9be633..000000000
--- a/api/search.index/5ffabbdabc06.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUMAAEMSwRzhHGUEQgAAFo8akBoLwRwM4BwEmBgM4RxmbXJ1dxgNGQ0aDRsNXA1dDV4N1QJAAAAExhgUgRuCGwDiDmZtc6ENog2jDU0YThhPGFAYGxpjG2QbZRssHS4dNB2/AIWgMAAAF8mgEAAAGPMIkAY=")
\ No newline at end of file
diff --git a/api/search.index/601d67e6408d.js b/api/search.index/601d67e6408d.js
new file mode 100644
index 000000000..db25420d4
--- /dev/null
+++ b/api/search.index/601d67e6408d.js
@@ -0,0 +1 @@
+rn_("FQBEAAAGvx1kcB2wHSMAAqCAAAAdIGNs9y0NAAB6AAEAAQAqCjkDjgJBQQAAMhEzEd4WsBtbHVsDoAAAAAkFZWt5")
\ No newline at end of file
diff --git a/api/search.index/60a38c8605a4.js b/api/search.index/60a38c8605a4.js
deleted file mode 100644
index 1e276d9e1..000000000
--- a/api/search.index/60a38c8605a4.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQFAAAAGIB0BVRwzccUcFQBEAAAD2BtscBnXHDFIAABFHUkdWx1jHTFCAABsHHocrhy4HAUBwAAADKsdDZEdYWgPB4eggAAAHWWggAAAHW6hUAAAHbOgoAAAHZseABzzgQJwdisCoCAAAB0pb3IFAcAAAAKJGxRUGOgcaW8FAcAAAAskGwOSHGF0GwKwABpKAyRjZAUBwQAADNMcAyYZbW6BRgAA/hj/GCIbMBuHG5Mb1htwHNscN1YAjLBwHSoADaAwAAAckKAgAAAcVKBAAAAYkaAwAAAckaCAAAAdFNapEzowAAABAAAAAAAZABAAAAAWDRcNSA1JDUoNSw1MDU0NTg1PDVANUQ3JE9UT8xb3FvwWAxcOGF0YXhgaGX4ZGRoaGgQb")
\ No newline at end of file
diff --git a/api/search.index/6107b6e4bebb.js b/api/search.index/6107b6e4bebb.js
deleted file mode 100644
index 60ea562e6..000000000
--- a/api/search.index/6107b6e4bebb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAFRB1j5hznHFUAQAAAVJ8YoBihGKIYoxikGHQeDYMNdRl7GX8agBpRRQAAmRiaGJsYnBidGJ4YBQBFAAAGgh1iER0VAEEAAATEHGaVHZYdFQBCAAAE5BxmmR2aHfsCYW8hRQAAVxqtG64b8wMDbHB384YZAAB8AdQBBQBCAAAE9RtjUhsjgQKgIAAAGKVlbCMAA6DwAAAdoaCAAAAbr2VmcvMdDQAADhACAPMAhSiAEjswAAABAAAHAAIA0QoAAKcMBgAbAqCgAAAbgGVp")
\ No newline at end of file
diff --git a/api/search.index/610b04822861.js b/api/search.index/610b04822861.js
deleted file mode 100644
index 219775029..000000000
--- a/api/search.index/610b04822861.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAAFsBsGjhxmbjUAQAAABC4dcGcbaBuTHEEdBQHAAAAHYh0BtxxhbwUBxAAAApodAZYdYW8jhQKgAAAAHS1kZgUBxAAABosdA3sdb3QbAqDgAAAdpmhvZzQAiqBQAAAa6aAwAAAc2qGAAAAdu7BAHRIAAaBAAAAdFy6YBzowAAABAAAAAAAJABAAAACiDqMOpA7uGu8a9xqCHMcc6RxsHQ==")
\ No newline at end of file
diff --git a/api/search.index/614fd32ac5fa.js b/api/search.index/614fd32ac5fa.js
new file mode 100644
index 000000000..aa1a403c4
--- /dev/null
+++ b/api/search.index/614fd32ac5fa.js
@@ -0,0 +1 @@
+rn_("FQFDAAAFrhsGfB10d9cbnhwFAEcAAAyyHWHlHCMEA6AgAAAdW6BgAAAbgnJ0dgH1HAAAGwKg0AAAHQxjdAUBQwAABoAbBoEbYm/xFhOBAqDgAAAc1mFjAQIAOzAAAAEAAMoAAgAUEQAArRTJAIcOAIigwAAAG3+gQAAAE8GgkAAAGXOhEAAAHVIxkAc7MAAAAQAAzQAEABIJAQDNCgAA0QvJAOcOAAABAISgMAAAERmgMAAAERqgQAAAE8qgcAAAGFwAFQE6MAAAAQAAAAAAIQAQAAAA7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoIjwqQCpEKkgo1EUARwRPSE9MT3hdqGHkZhRmGGYgZiRk4G2occBzBHMwcCx37AnJ3CYSgYAAAHbmAF+IAEyg+9MpsFpWgUAAAGFwoIAIFAUEAAAd/GwJ+DmFyEQnzAANhZW/yYgEAAAEA")
\ No newline at end of file
diff --git a/api/search.index/6188b5f42659.js b/api/search.index/6188b5f42659.js
new file mode 100644
index 000000000..bf7e3c78e
--- /dev/null
+++ b/api/search.index/6188b5f42659.js
@@ -0,0 +1 @@
+rn_("FQBNAAAEox1mwB3BHSOGA6AQAAAaJ6CAAAAc8G1zdAUASgAAFHYddx1tVR0VAEYAABQYHRkdbe8cch3zhgJmcEsDoDAAABPPoEAAABd7ZHBzFwQAh7BwGUQAAaAwAAAOgbAwElYGp6CgAAAbWqDQAAAcmiXACgFKBAAA")
\ No newline at end of file
diff --git a/api/search.index/61bda4b48d79.js b/api/search.index/61bda4b48d79.js
new file mode 100644
index 000000000..f4b96715f
--- /dev/null
+++ b/api/search.index/61bda4b48d79.js
@@ -0,0 +1 @@
+rn_("RQBBAAAU/hz/HG3IGMkYyhjIHMkcBQBFAAAEwRxldRobAqAgAAAbDXV5MwSEsCAX4gABoEAAABsOAgEDOjAAAAEAAAAAAAsAEAAAADsR4BbhFssXzBciGbIb0BvpG+ob+BxlHQUBwAAAEzoRURoECR1pchUBQQAABG4ZBEcab3SNF4obxwEAhqBwAAAdOKCAAAAYebDwHUEAATpAAjowAAABAAAAAAAHABAAAAD+B1oaWxofG4UbjhsvHZcd")
\ No newline at end of file
diff --git a/api/search.index/61ce9742cbb6.js b/api/search.index/61ce9742cbb6.js
deleted file mode 100644
index e3df09a17..000000000
--- a/api/search.index/61ce9742cbb6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBEAAAGkhtyGRgaGBsYHBgdGB4YHxgBAAF6b5apg5lw9J4KAABLDTsAbQAFAcAAAAdhHQG2HGFvBQBCAAAz+BYQGBEYWh1wjhwFAcQAAAKZHQGVHWFvI4QCoAAAAB0rZGbzAAFl8tgKAAArEgUBwAAADaUdBO0abW4FAcQAAAaKHQN6HW90awOg0AAAHX9haG9nbACMoIAAABr3oDAAABzZsIAbHwHwoYAAAB26oEAAAB0WsIAdgAABbpgXOzAAAAEAAOoAFABPBAAA2wcMANUOAQDvEsgA+RUAAOQXAACrGAEAbRkAAHcZAABPGgAA6RoAABUbAABsGwAAixsAALobAQBeHAAAbxwAANUcAAAIHQAAZB0AABMAAivmlYNTsWVwOjAAAAEAAAAAAAsAEAAAAPAKExGfGKAYoRiiGKMYpBiFG4Yb0BwxHQ==")
\ No newline at end of file
diff --git a/api/search.index/61f656df393a.js b/api/search.index/61f656df393a.js
deleted file mode 100644
index ef686a73a..000000000
--- a/api/search.index/61f656df393a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUEAAE8SLhsvGzUBQwAAF5McQR0Afxdmc60WrhavFrAWBQBAAAADaxxqYRwlAEMAABEoHUMdZRgbTR1OHWMBA6AgAAAbv2lsc/X4FQAAWgLYAQEABgHfAIWwABFFB7KgEAAADocpQAQ=")
\ No newline at end of file
diff --git a/api/search.index/61f7c24196b0.js b/api/search.index/61f7c24196b0.js
new file mode 100644
index 000000000..cca7e85cd
--- /dev/null
+++ b/api/search.index/61f7c24196b0.js
@@ -0,0 +1 @@
+rn_("IUYAAFYZVxmAGxMAA6BgAAAbgaCAAAAduWJvcjowAAABAAAAAAATABAAAADZDNoM2wzcDN0M3gzfDOAM8RbgF1kYcxl0GVwasxu0G1wc7hwuHUkdUUwAAIQchRyGHIcc+xz8HDsDoLAAABzRZnJ0")
\ No newline at end of file
diff --git a/api/search.index/6266a88041f3.js b/api/search.index/6266a88041f3.js
deleted file mode 100644
index e7019bcb1..000000000
--- a/api/search.index/6266a88041f3.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQEBoHAAABp1ZjswAAABAABKAAkA8QoCAP4MAQCVDgAAyBIfAMwYAADPGB8ARBoBAEMbAADOHAAARQBBAAAGnh1khw2IDRMaqRteHQUBwAAAACUdB2MZc3R7hKEgAAAdVxSgAA==")
\ No newline at end of file
diff --git a/api/search.index/6273c17257e5.js b/api/search.index/6273c17257e5.js
new file mode 100644
index 000000000..7312cef93
--- /dev/null
+++ b/api/search.index/6273c17257e5.js
@@ -0,0 +1 @@
+rn_("BQBGAAAGhB1mAx3zAwFzAVISAAA1AEAAABPvF/AXacQYxRj6GvsaBQBDAAAA7hdzDh1jAgOwEBlEAAFpbnPyVRkAADoEBQHAAAAHZx0BvBxhbwUBxAAAAp8dAZsdYW8jhQKgAAAAHTFkZgUBxAAABpAdA4Adb3QbAqDgAAAdq2hvNwGDh6AwAAAc36GAAAAdwKBAAAAdHKBQAAAdMiyIAwUASQAABh4dYjEbE4ICsFAZYAABZndLA6CAAAAYW6BAAAAdIGFlaQUAQQAAAisRZeQKGwKwQB0MAEZjdAUBwAAAEBUNFg0R3g6bG25yGwOgkAAAHU6woBtyAfhhZXPXBwDHsGAYkQABAEwKDPNoBAAAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/62a363a5b216.js b/api/search.index/62a363a5b216.js
new file mode 100644
index 000000000..488fe30f5
--- /dev/null
+++ b/api/search.index/62a363a5b216.js
@@ -0,0 +1 @@
+rn_("BQHAAAAHUh0ibBhtGEAbb3kjAQKwYBppAiFsdDowAAABAAAAAAAJABAAAAAuES8RSxJMEk0SThILGCoZaxyFHQUBxQAAKBsdWR1aHQSPHWFvBQHAAAAEbBsiUxlUGekcb3kVAEoAAAa/HWRwHbAdBQHAAAACBx0Jnh1pbxMIAqAwAAAdP2Zp96EcAABCAAEARQAMAAEAOAAhRQAAeh2LHYwdJQBAAAADoBxpfBx9HPQcIUIAAGcaaBoKHTFBAABpG2obaxs6HQUBwAAAFXkcbR0Cnxx1efMBhAIBAzowAAABAAAAAAAMABAAAABrGE4ZTxlQGVEZUhkSG6IbgxzoHFEdXB2JHfsCZWzzAANwdHUByRYAABUAQQAABZQbdxgYGRgVAEAAABR2HXcdbVobVR37AmRuRQBDAAAAiRxzExk5Gu4b7xvDHCsCoEAAABuVYWkFAEEAACXrG6Ycpxx3+RoFAcAAAArEHAeeHGx [...]
\ No newline at end of file
diff --git a/api/search.index/6376c32b37e0.js b/api/search.index/6376c32b37e0.js
deleted file mode 100644
index a1bd16d3a..000000000
--- a/api/search.index/6376c32b37e0.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUgAAEUdSR1bHWMdMUIAAGwcehyuHLgcBQHAAAAMqx0NkR1haA8Hh6CAAAAdZaCAAAAdbqFQAAAds6CgAAAdmx4AHA==")
\ No newline at end of file
diff --git a/api/search.index/63aed08d3336.js b/api/search.index/63aed08d3336.js
deleted file mode 100644
index b2b52168e..000000000
--- a/api/search.index/63aed08d3336.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBEAAAKQB13SxgFAEQAAAo/HXdKGPsCY3QxQQAAeg5sGHwbGR0FAcAAAAh7GSElGWUcfx1vdmFBAAAlGCYYPxoJG4wcmhw5HfuEEEEC")
\ No newline at end of file
diff --git a/api/search.index/63c39986a728.js b/api/search.index/63c39986a728.js
new file mode 100644
index 000000000..9c26bc2fe
--- /dev/null
+++ b/api/search.index/63c39986a728.js
@@ -0,0 +1 @@
+rn_("ZQBEAAAHkBtyjhePF5AXkReSF5MXlBcbAqAgAAAOjWF5AQAAOzAAAAEAABcABQCyDAcAMhgGAP0aBgCcGwAA3hwAAAUAQwAABrsdZKId8wIBc/KRDQAAAQAFAcgAAAe1HGAoGikaKhorGiwaLRouGnJzBQBAAAAEkxxjxBvzAwFzATsbAAATAQKggAAAHFdmcgGGDgAABQHAAAASHBkHHRkQHZ4daW8TAAOwMBpEAvuwMBpFAAFmaXA6MAAAAQAAAAAADgAQAAAA4hZ3GHgYZBluGm8acRt5G6Ec4xzkHCkdNR02HW4dKwKgMAAAGWdmc/sCY25lAEQAAAZ7HHJYGVkZWhlbGVwZXRleGSsCoGAAABsJY3TFAEUAABabHJwccBAYpBulG6YbpxuoG6kb8BvxG/Ib8xv0G/Ub+wJsciFEAABeHF8cLB23DwCJoIAAABl8oFAAABuSNGEWOjAAAAEAAAAAAAwAEAAAAEs [...]
\ No newline at end of file
diff --git a/api/search.index/63cdb5e04925.js b/api/search.index/63cdb5e04925.js
new file mode 100644
index 000000000..4ad49e7ec
--- /dev/null
+++ b/api/search.index/63cdb5e04925.js
@@ -0,0 +1 @@
+rn_("IUEAAFMSMxs0GzUBQwAAF5kcRx0Agxdmc7EWshazFrQWMUAAAEkRxhL8GP4YBQBAAAADcRxqZxwlAEMAABEuHUkdZR0bUx1UHWMBA6AgAAAbxWlsc/X8FQAAWwLYAQEABgH/AIWgEAAADokpQAQ=")
\ No newline at end of file
diff --git a/api/search.index/6458ece183de.js b/api/search.index/6458ece183de.js
deleted file mode 100644
index 8c6878214..000000000
--- a/api/search.index/6458ece183de.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBAAAADaxxqYRwlAEMAABEoHUMdZRgbTR1OHRUARAAABAUdZZcbmBsFAcYAAAeEHQVpHWZ0+wJhZhMBAoAT0wAT+GRyOzAAAAEAAHEBBgAyEQIAWRJhAPAWAQAaF1oAkRpXAPkbVwArAqAQAAAbv2R6BQBGAAAGvh1ktB3zAQFhAYQNAAAbAqAAAAARJWNxYUIAAJcXmBeZF5oXmxecF50X1wkAiLBgGiECgaAgAAAT0KBAAAAZBBxJA/X4FQAAWgLYAQEABgEbArAAFuYCUWxz")
\ No newline at end of file
diff --git a/api/search.index/64927b507363.js b/api/search.index/64927b507363.js
deleted file mode 100644
index 2d716a621..000000000
--- a/api/search.index/64927b507363.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBEAAAHihtyiheLF4wXjReOF48XkBcbAqAgAAAOi2F5AQAAOzAAAAEAABcABQCwDAcALRgGAPgaBgCWGwAA2BwAAAUAQwAABrUdZJwd8wIBc/KPDQAAAQAFAcgAAAevHGAjGiQaJRomGicaKBopGnJzBQBAAAAEjRxjvhvzAwFzATYbAAATAQKggAAAHFFmcgGEDgAABQHAAAASFxkBHRkKHZgdaW8TAAOwMBo/AvqwMBpAAAFmaXA6MAAAAQAAAAAADgAQAAAA3hZyGHMYXxlpGmoaaxtzG5sc3RzeHCMdLx0wHWgdKwKgMAAAGWJmc/sCY25lAEQAAAZ1HHJTGVQZVRlWGVcZWBlZGSsCoGAAABsEY3TFAEUAABaVHJYccAsYnhufG6AboRuiG6Mb6hvrG+wb7RvuG+8b+wJsciFEAABYHFkcJh23DwCJoIAAABl3oFAAABuMNGEWOjAAAAEAAAAAAAwAEAAAAEs [...]
\ No newline at end of file
diff --git a/api/search.index/6513c5cc895b.js b/api/search.index/6513c5cc895b.js
new file mode 100644
index 000000000..9445f3769
--- /dev/null
+++ b/api/search.index/6513c5cc895b.js
@@ -0,0 +1 @@
+rn_("MUAAABEYEhhIGEkYBQFDAAAGbR0CCh1icoMcI4cCoEAAABzDZnMbAqBwAAAZAWFyBQBEAAAAoxtzPBu3AADGoIAAABkCoDAAABEVoGAAAB1MAAigCzowAAABAAAAAAAKABAAAADmCOcIlRfBFwkYChiAGJMYBhsrG8gb")
\ No newline at end of file
diff --git a/api/search.index/655c50171de4.js b/api/search.index/655c50171de4.js
new file mode 100644
index 000000000..e9c72d5a3
--- /dev/null
+++ b/api/search.index/655c50171de4.js
@@ -0,0 +1 @@
+rn_("FQBFAAAIIB1jDBuaHQUBwAAAAxsZBM8cYW/zAAJ0dfc5EQAAhwEBAAEAvwYBAIgBVQBAAAAFMhtlCBcJFxkZGhkvGzAbGwKwYBszAAFmdBsCoGAAABp0ZW8BAQOgQAAAHSSwQBuWAAGgAAAAGC9mbXM7MAAAAQAAFAAGAK0XDgA+GwAAzhsAAPobAAB4HQAAqx0BAAcNAomgQAAAHGCgMAAAGWWgQAAAHQagUAAAGwugIAAAFweggAAAHaYnCQc6MAAAAQAAAAAADQAQAAAAlQ7hDuIO4w7kDuUO7RbuFuoXkBplHBAdcR2eHfMAAWj2owoAAAEABgAFDDwAAQA=")
\ No newline at end of file
diff --git a/api/search.index/65641f372996.js b/api/search.index/65641f372996.js
deleted file mode 100644
index 6dd5dc8be..000000000
--- a/api/search.index/65641f372996.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLDAAAIZR0CehwISR1idXcjBgKgYAAAGzBicAHVEwAAIwAEsIAX4AGBoIAAABySoRAAABy8YmNsdvN4AQAAvwIeGA==")
\ No newline at end of file
diff --git a/api/search.index/6581fe9c9918.js b/api/search.index/6581fe9c9918.js
new file mode 100644
index 000000000..da40571c0
--- /dev/null
+++ b/api/search.index/6581fe9c9918.js
@@ -0,0 +1 @@
+rn_("UUUAAHYZhxqIGusbphynHCUAQQAABRUZY5MO3w7gDhsCoEAAABX9bHAFAsAAAAfwHB/XHNgcA0caaXJ5AQYAOzAAAAEAAK8AAgCWGlcA/xtXACUASwAABKMdZlAdwB3BHfsCcXIxRAAARRtGG0cbSBs7A6CAAAAbPmNlbgUAQQAAJHwafRq1G2PjEwUATgAABsQdZLod84ECcHcFAEEAABR2HXcdbVUdE4cCoKAAAB2PaXYbAqCAAAAb5mFyBQHAAAAKyxwAJxplcxUAQgAAB+scbdEXrRh1AUMAAAcuGwDLFm9zLBEtEUgSSRJKEgEZVBt7HRsCoGAAABvhY3QVAEIAABQ9G/sbYyUaWBsFAcAAAAdoHQG9HGFvBQHEAAACoB0BnB1hbyOFAqAAAAAdM2RmBQHEAAAGkR0DgR1vdBsCoOAAAB2saG83AgGIoDAAABzgoYAAAB3BsEAdGAABoEAAAB0doFAAAB00LJg [...]
\ No newline at end of file
diff --git a/api/search.index/66222152fa33.js b/api/search.index/66222152fa33.js
deleted file mode 100644
index b430331ab..000000000
--- a/api/search.index/66222152fa33.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAABUyhOCF4MXhBeFF4YXBIcXaHQFAcEAAAKxFgFmG3J0MUIAAMEYwhhsGhcbZQBDAAAD1BdhIRIiEiMSJBIlEiYSJxIFAcAAAAjwGiUBGAIYAxhvdQEAzaAgAAAOrgG04P/7vaCwAAAaXbBAGScAAXJoHKuDjqAwAAAYzjxEBSiKH6DAAAAcVkSmqGpCgg3FIOYpCaBAAAAWsrBgGAQAAaAgAAAOr8DMMQ87MAAAAQAAGQIGAEgEAAD/BsgALw0AAD0QyABzFYMAgBcBAA==")
\ No newline at end of file
diff --git a/api/search.index/662552ff1569.js b/api/search.index/662552ff1569.js
deleted file mode 100644
index 728bbfc3b..000000000
--- a/api/search.index/662552ff1569.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUMAAHcaeBqvG1EcBQBHAAAMrB1h3xwjAwOgIAAAHVWgYAAAG3xydHYB7xwAAPsCaG8TAAOw4B1YAAGg0AAAHQZjZXQB3xMAAA==")
\ No newline at end of file
diff --git a/api/search.index/6660663a143d.js b/api/search.index/6660663a143d.js
new file mode 100644
index 000000000..e4beb7a01
--- /dev/null
+++ b/api/search.index/6660663a143d.js
@@ -0,0 +1 @@
+rn_("BQBBAAAJzhtz1QxFAEQAAAfYG2waHUsdTx1hHWkdcUAAADIRMxHeFhQYihl2GrAbWx1RQAAAzhOGF4cXiBeJF4oX8wCEqCAA9VUNAAABAAEAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/66b8032aba36.js b/api/search.index/66b8032aba36.js
new file mode 100644
index 000000000..ab1828769
--- /dev/null
+++ b/api/search.index/66b8032aba36.js
@@ -0,0 +1 @@
+rn_("MUoAAPYb9xv4G/kbBQHCAABSJBklGSYZJxkoGSkZVH4afxqAGoEaghqDGmt2UUoAAPAb8RvyG/Mb9Bv1G+uEsEAX7AABIBgC")
\ No newline at end of file
diff --git a/api/search.index/66f47bdcbf23.js b/api/search.index/66f47bdcbf23.js
new file mode 100644
index 000000000..6449a8bb5
--- /dev/null
+++ b/api/search.index/66f47bdcbf23.js
@@ -0,0 +1 @@
+rn_("BQHAAAAGiBwBDRtmaaUARQAABMEcZVYZVxl1GiUbgBt0HHgcsxy3HB4diB0VAEMAADARGBIYSBhJGHOVF8EX+wNvdXk=")
\ No newline at end of file
diff --git a/api/search.index/6759df3f6f93.js b/api/search.index/6759df3f6f93.js
deleted file mode 100644
index 05834ccae..000000000
--- a/api/search.index/6759df3f6f93.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBEAAAGkhtyGRgaGBsYHBgdGB4YHxgFAcsAAASMHQWXHXFzEwQCoGAAABzUcHI7MAAAAQAADQACAIQaBgAOGwYAYwADsIAbHwHwZ3N0OzAAAAEAAMsAAwDvEsgATxoAALobAQA=")
\ No newline at end of file
diff --git a/api/search.index/677b3fdcef63.js b/api/search.index/677b3fdcef63.js
new file mode 100644
index 000000000..b2ea75477
--- /dev/null
+++ b/api/search.index/677b3fdcef63.js
@@ -0,0 +1 @@
+rn_("FQFDAAAHOB0FCR1iZo4blx0FAEYAAAUqHXJ4GzFHAAA3G9cc2Bw5HfMDAmZsOzAAAAEAAAcAAgA/EQAA7BIGACUARQAABdUcYRIXvxfAF3uEsEAaSQABIYAE")
\ No newline at end of file
diff --git a/api/search.index/679b2fe61a64.js b/api/search.index/679b2fe61a64.js
new file mode 100644
index 000000000..1471d5b25
--- /dev/null
+++ b/api/search.index/679b2fe61a64.js
@@ -0,0 +1 @@
+rn_("BQBAAAAEkxxjxBvzAwFzATsbAAATAAOggAAAHFegMAAAGvdmcnQBhg4AAEMAhKBAAAAXeaAgAAAa+LAQF4QAAUkABPIECQAAKwk=")
\ No newline at end of file
diff --git a/api/search.index/67b00faf9eeb.js b/api/search.index/67b00faf9eeb.js
new file mode 100644
index 000000000..6b11d01c3
--- /dev/null
+++ b/api/search.index/67b00faf9eeb.js
@@ -0,0 +1 @@
+rn_("BQBEAAAKRh13UBgFAEQAAApFHXdPGPsCY3QxQQAAfA5xGIIbHx0FAcAAAAiAGSEqGWschR1vdmFBAAAqGCsYRBoOG5IcoBw/HfuEEEEC")
\ No newline at end of file
diff --git a/api/search.index/6806cb82db1b.js b/api/search.index/6806cb82db1b.js
new file mode 100644
index 000000000..61b97e6d5
--- /dev/null
+++ b/api/search.index/6806cb82db1b.js
@@ -0,0 +1 @@
+rn_("BQHAAAAH8BwDRxppeRUATQAABKMdZsAdwR0VAEIAAAfrHG3RF60YBQBCAAAE+xtjWBsVAEIAAAIQGXL9FqoY84ECZWwVAEUAAAmnHWb7GNobBQHBAAABIhoH3RtpcAGCAqCQAAAdLaEQAAAdjml1KwKgwAAAHVtydPdhAMygEAAAGiegQAAAGW6hMAAAHY+ggAAAG7WwUB19ABDADLULOjAAAAEAAAAAAAcAEAAAAB8Ndw4uEt4TjReKGzEdMx0=")
\ No newline at end of file
diff --git a/api/search.index/68274008d303.js b/api/search.index/68274008d303.js
deleted file mode 100644
index f50c5da06..000000000
--- a/api/search.index/68274008d303.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUgAACMbxhvHGxAdEwMCoFAAAB0hZ3I7MAAAAQAAGwAJALgOCAD/FgMAKBgBAEYaAABhGgAATxsBAFgbBQDSGwEACR0AAAUARgAABrAcZgUZ8wIBc/IjDQAAlAH7Amx08wABYfIWAwAA8Q0=")
\ No newline at end of file
diff --git a/api/search.index/68968fdfeae9.js b/api/search.index/68968fdfeae9.js
deleted file mode 100644
index 35a8d91fc..000000000
--- a/api/search.index/68968fdfeae9.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBCAAAAShFzgQ5JETFBAAD8DP0MBhkZGwUBwAAAEhcZAR0ZCh2YHWlvEwADsDAaPwL6sDAaQAABZmlwOjAAAAEAAAAAAA4AEAAAAN4WchhzGF8ZaRpqGmsbcxubHN0c3hwjHS8dMB1oHSODAqAwAAAZYmZzFQBBAAAgNho3Gucbc5kbvBwFAEQAAAdHHXAGF/MAAXQBhxcAAPsDY29zBQBDAAADshxpJRsjAwKgcAAAHW9wdPRgGAAA5QABAAEA+4QBAUg=")
\ No newline at end of file
diff --git a/api/search.index/699fc0bddc0e.js b/api/search.index/699fc0bddc0e.js
deleted file mode 100644
index d12c246fe..000000000
--- a/api/search.index/699fc0bddc0e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBDAAADshxpJRsjBAKgcAAAHW9wdPRgGAAA5QABAAEAIUIAAA8YhRlxGgUAUgAABrwdZK0dFQBAAAAAxRxz9xYOGGUARQAABSEdcmEaWBtZG1obWxtcG10b84ECY2cVAEIAAAHHHGlTG7wbGwKwEBi8AvxlbBsCoIAAAB1XaXIlAE0AAAa3HWRQHVEdoh0FAcMAAAMIHRD1GvYabnPzgQJsbQUBxAAAMeYbexzMHPMcBRsdZXL3CwCIoHAAAB0OJogHOzAAAAEAACoAFADCDg4AyhcBANAXAQDjFwAA/hcAAAcYAwB5GAEAixgAAK8YAQDyGAAAZhkAAHkZAABgGgAAXhsCAHYbAAD4GwAAixwAAOUcAAD7HAAAAh0AAA==")
\ No newline at end of file
diff --git a/api/search.index/69c1f836f0b3.js b/api/search.index/69c1f836f0b3.js
new file mode 100644
index 000000000..90810ca93
--- /dev/null
+++ b/api/search.index/69c1f836f0b3.js
@@ -0,0 +1 @@
+rn_("BQBDAAADuBxpKhsjBAKgcAAAHXVwdPRlGAAA5QABAAEAIUIAABQYihl2GgUAUgAABsIdZLMdFQBAAAAAyxxz+xYTGGUARQAABScdcmYaXhtfG2AbYRtiG2Mb84ECY2cVAEIAAAHNHGlZG8IbGwKwEBjBAv1lbBsCoIAAAB1daXIlAE0AAAa9HWRWHVcdqB0FAcMAAAMOHRD6GvsabnPzgQJsbQUBxAAAMewbgRzSHPkcBSEdZXL3CwCIoHAAAB0UJogHOzAAAAEAACoAFADEDg4AzhcBANQXAQDnFwAAAxgAAAwYAwB+GAEAkBgAALQYAQD3GAAAaxkAAH4ZAABlGgAAZBsCAHwbAAD+GwAAkRwAAOscAAABHQAACB0AAA==")
\ No newline at end of file
diff --git a/api/search.index/69c69ebdf8e1.js b/api/search.index/69c69ebdf8e1.js
new file mode 100644
index 000000000..aeb27cc86
--- /dev/null
+++ b/api/search.index/69c69ebdf8e1.js
@@ -0,0 +1 @@
+rn_("AYECsUAdlQABsPAdXgABZ3MVAUsAAAc4HQUJHWJmjhuXHQUBwAAAAHwdBm8ZZXQFAcMAAAxIHQ9+HWNm+4QRQQA=")
\ No newline at end of file
diff --git a/api/search.index/69e382aada67.js b/api/search.index/69e382aada67.js
new file mode 100644
index 000000000..4f6b1b69d
--- /dev/null
+++ b/api/search.index/69e382aada67.js
@@ -0,0 +1 @@
+rn_("MUAAAEUbRhtHG0gbBQBKAAAGHx12RR0FAEUAAAyyHWHlHCOBAqCgAAAc9WFzJQBAAAATKhgrGGluGG8YXxlBQgAAMhEzEd4WsBtbHQUBwwAABmAdACkYbXO1AUEAABRuHG8cAN0WbXOUDlcSWBJZEloSWxJcEnAZcRkgG04bTxsFAcAAAAVwGBInGCgYdXnnLgDKoMAAAB2yoHAAABkWsGAYcQMRwECoGzswAAABAAArAA4A7goCAOIMFgANEQMA4RMBAE8YAAAvGQEAchoBAKAbAADSGwAAWBwAAOUcAAD1HAAABB0AAF0dAAA7A6AgAAAbxmFlbw==")
\ No newline at end of file
diff --git a/api/search.index/69f8e5314b7a.js b/api/search.index/69f8e5314b7a.js
new file mode 100644
index 000000000..e10faae94
--- /dev/null
+++ b/api/search.index/69f8e5314b7a.js
@@ -0,0 +1 @@
+rn_("BQBAAAADcRxqZxwlAEMAABEuHUkdZR0bUx1UHQkCoBAAABvFf/8BCWpXZHoFAEYAAAbEHWS6HfMBAWEBhg0AABsCoAAAABEpY3FhQgAAmxecF50XnhefF6AXoRfXCQCIsGAaJgKCoCAAABPUoEAAABkJHEkD9fwVAABbAtgBAQAGARsCsAAW6gJSbHM=")
\ No newline at end of file
diff --git a/api/search.index/6ad1d5080711.js b/api/search.index/6ad1d5080711.js
deleted file mode 100644
index ec4f7301b..000000000
--- a/api/search.index/6ad1d5080711.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHFAAABSB0E2htpdNFDAAAtGC4YLxgwGDEYMhgzGPga+Rr6Gvsa/Br9Gv4a+wJpdDFDAADOE88TgRkzGwUBwAAACdsbFB0bURtlcCFCAADhG+IbyhwFAEIAAAKuHW2jHSOHAqCAAAAdsmFrYwcDoKAAAB2oYWNrAfAcAAA7A6BAAAAaE2NkdEcDAIawkByLAHegUAAAG1WgAAAAHMkEqCEBdh0AAA==")
\ No newline at end of file
diff --git a/api/search.index/6ae9c2f9a39b.js b/api/search.index/6ae9c2f9a39b.js
new file mode 100644
index 000000000..9bd327afc
--- /dev/null
+++ b/api/search.index/6ae9c2f9a39b.js
@@ -0,0 +1 @@
+rn_("IUUAAGAZYRmUGwUBwAAAQM0Mzgy4FiMaMRoC9xpoeQUARgAABoQdZgMdBQBFAAAGHh1iMRsFAEAAAASTHGPEG/MCAnN3ATsbAAArAqBgAAAaemFpFQBDAAAEQRtmgB2BHRUARgAABIscZpAdkR0FAcAAABSVHZYdNSgbzBvNGxYdYWXHAgCGoMAAAB1IoPAAAB1+sAANVAzQJGAG8wYJAABPCR8INwcAh6AwAAANiKCAAAAcVzABFzswAAABAABaABUATQQBANkHAQDzCgIAAA0BAJ0NAACGDgAAkQ4AAJcOAAAREQAAUhIAAMwSHwDHEwAA/BYAABUYAQAYGAEA0RgAANQYHwBJGgEASRsAANQcAABgHQAA")
\ No newline at end of file
diff --git a/api/search.index/6b0160cb0ccb.js b/api/search.index/6b0160cb0ccb.js
deleted file mode 100644
index 3288d6926..000000000
--- a/api/search.index/6b0160cb0ccb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBHAAAYgB2BHXdeHBUARAAABAUdZZcbmBsFAcYAAAeEHQVpHWZ0+wJhZlMBA4AT0wAT+GRydDswAAABAABxAQYAMhECAFkSYQDwFgEAGhdaAJEaVwD5G1cA")
\ No newline at end of file
diff --git a/api/search.index/6b3dbec8c7cc.js b/api/search.index/6b3dbec8c7cc.js
deleted file mode 100644
index 4bd57695a..000000000
--- a/api/search.index/6b3dbec8c7cc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQFAAAAGIB0BVRwzccUcBQHAAAACiRsUVBjoHGlvBQHBAAAM0xwDJhltboFGAAD+GP8YIhswG4cbkxvWG3Ac2xw3RACMsHAdKgANoDAAAByQoCAAABxUsBAaSgMkoEAAABiRMCH1mjtOoDAAAByRoIAAAB0U1qkTOjAAAAEAAAAAABcAEAAAABYNFw1IDUkNSg1LDUwNTQ1ODU8NUA1RDckT1RPzFvcW/BYOGF0YXhh+GRkaGhoEG3UARQAABSEdcmEaWBtZG1obWxtcG10b0xs7A6AQAAAT0GNncg==")
\ No newline at end of file
diff --git a/api/search.index/6b54c956c1f1.js b/api/search.index/6b54c956c1f1.js
new file mode 100644
index 000000000..e4e5333f9
--- /dev/null
+++ b/api/search.index/6b54c956c1f1.js
@@ -0,0 +1 @@
+rn_("FQBEAAAWuhy7HGYRGRIZKwOgYAAAGP6gMAAAGNFlb3IFAcEAAALyFgzUHGZuBQHEAAAB/BgFfhtpc/sCbG8FAcUAAAJTGgMaG2tuGwKgsAAAG9tjdTcCAIawABbvAAGgMAAAHHGgcAAAGP0VAgY6MAAAAQAAAAAADwAQAAAA4gjjCOQI5QgUCbQKtQq4DtkO2g7bDuYW5xadGMkbZxw=")
\ No newline at end of file
diff --git a/api/search.index/6b7222b89b25.js b/api/search.index/6b7222b89b25.js
new file mode 100644
index 000000000..ccdaa9b21
--- /dev/null
+++ b/api/search.index/6b7222b89b25.js
@@ -0,0 +1 @@
+rn_("MUkAAEUbRhtHG0gbMUMAAPwb/RviHAAd8wACbHU6MAAAAQAAAAAAEQAQAAAAngyfDKAMoQyiDKMMpAylDKYMkg4eEScR8hZ6GHsYFRkrGUod")
\ No newline at end of file
diff --git a/api/search.index/6b7b4b4ce056.js b/api/search.index/6b7b4b4ce056.js
new file mode 100644
index 000000000..bb016647d
--- /dev/null
+++ b/api/search.index/6b7b4b4ce056.js
@@ -0,0 +1 @@
+rn_("BQLGAAACmxsJTh0Kah1hZXMVAEAAABJEETASdc0LzgsFAEQAAAa2HGYKGQUAQwAABM4cddkX8wIBb/KMDgAApgP7A2hvciUAQQAACIgcYpkOfxl/GzUBQgAAUYYYhxiIGHAaGxstGxU6G7kcaXNzG3QbfxyyHDFEAADGGMcYcRocG2UARAAABr0dZFgaWRpDG0QbVh1XHagdUwEDsDAbcgH4Y2509yoNAADyCQEAVQEVAdAA0gBRQwAAwhPDE8QTxRMYFxkXBQBKAAAUdh13HW1VHRUARgAAFBgdGR1t7xxyHTOBA6DQAAAdUGZwc1OBA6AgAAAdsmVpdVsDoBAAAA2dZ25vBQBAAAACAhd5ygwPCMigwAAAHLKgIAAAE9WgIAAAE9agYAAAF92goAAAG8WggAAAGl+gkAAAGxwAAc0DBQHHAAABLRsFuRxpcxuEsBANmwABoIAAABryoFAAABj9RBAC1w8AiKBQAAA [...]
\ No newline at end of file
diff --git a/api/search.index/6b97218d17eb.js b/api/search.index/6b97218d17eb.js
deleted file mode 100644
index 6fd76387b..000000000
--- a/api/search.index/6b97218d17eb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFDAAAHMh0FAx1iZogbkR0FAEYAAAUkHXJyGzFHAAAyG9Ec0hwzHfMDAmZsOzAAAAEAAAcAAgA7EQAA6BIGACUARQAABc8cYQ4Xuxe8F/sDYWZw")
\ No newline at end of file
diff --git a/api/search.index/6bf8492b3d3d.js b/api/search.index/6bf8492b3d3d.js
deleted file mode 100644
index 8bf8fac19..000000000
--- a/api/search.index/6bf8492b3d3d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("tQBCAAADphd05ArlCuYK5wroCukK6grrCngZGx0hHSQdBQBFAAAGsRxiBxkhRAAA4hbjFsMbBQHBAAACCBkCBhlidPMAAXT1HREAABIBAQBUBrQEBQHAAABSnxigGKEYohijGKQYN/Ab8RvyG/MbZXUFAEMAABiAHYEdd14cRQFCAAAkWBxZHCYdBYwbY3fXF9gXuRi6GMUbKwKgQAAAGixlaQUCwQAAFO4a7xoR1hdnHBTsGiEbZWx4BQFDAAAPqR0SXhpfGmNyXBgFAEQAAAILGXL5FvMAAWYBKhIAAPsCZG4BggOhUAAAHbOgIAAAHLiggAAAHWNkdXcrAqAgAAAdKW9yQwQDoGAAABuTsHAdKgANYmVwAfwWAAAhQgAAQRlCGWYc+wJjdBsCoJAAABvdYW8FAcAAADVpGmoaaxtzGwEZG2l1BQHAAAADcRsAfRhhcwUBwwAAFz0dPh0SnhyfHGRzUwEDoFAAABv [...]
\ No newline at end of file
diff --git a/api/search.index/6c065cb2183d.js b/api/search.index/6c065cb2183d.js
new file mode 100644
index 000000000..ac0d4c652
--- /dev/null
+++ b/api/search.index/6c065cb2183d.js
@@ -0,0 +1 @@
+rn_("BQBFAAAB9xxpZhwbArCQHL8AAWVpIUUAAHIacxrSG/OFAnN2BQHAAAAF2RwH4xtmdAUAQwAAEUQZRRlpVRk7A6AgAAAdBmxudQUBwAAAEk0aThoU1hw3HWl0BQHAAAAveh2LHYwdJ3oc8hzzHGFyIUMAAAcZYhxjHAUAQQAABnMddIwcpwMAhqCgAAAdfqBAAAAXljSQAjowAAABAAAAAAAOABAAAABBEUIR/xaHG4gblhuXG24cbxz+HP8cGB0ZHXYddx0BggOhUAAAHbmgIAAAHL6ggAAAHWlkdXcrAqAgAAAdL29yQwQDoGAAABuZsHAdMAANYmVw8wAXAAAeAwEABQBGAAAQ5BsCHXKTG/MCAXD3/hYAAEgCAQAXAwEADQDAAPsCY3R3AQCFoHAAABiDgUAMAXsBAAA=")
\ No newline at end of file
diff --git a/api/search.index/6c8d8b9d5c45.js b/api/search.index/6c8d8b9d5c45.js
deleted file mode 100644
index fafd7c366..000000000
--- a/api/search.index/6c8d8b9d5c45.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUgAACMbxhvHGxAdEwICoFAAAB0hZ3I7MAAAAQAAGwAJALgOCAD/FgMAKBgBAEYaAABhGgAATxsBAFgbBQDSGwEACR0AAA==")
\ No newline at end of file
diff --git a/api/search.index/6ca950e9b018.js b/api/search.index/6ca950e9b018.js
deleted file mode 100644
index 43355848d..000000000
--- a/api/search.index/6ca950e9b018.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBEAAAD2BtscBnXHDFIAABFHUkdWx1jHTFCAABsHHocrhy4HAUBwAAADKsdDZEdYWgPB4eggAAAHWWggAAAHW6hUAAAHbOgoAAAHZseABzzgQJwdgUASAAABkYddsIbWwOgIAAAHSlsb3I=")
\ No newline at end of file
diff --git a/api/search.index/6cc204f46690.js b/api/search.index/6cc204f46690.js
new file mode 100644
index 000000000..f08808068
--- /dev/null
+++ b/api/search.index/6cc204f46690.js
@@ -0,0 +1 @@
+rn_("MUoAAI0cjhyPHJAcFQBFAAARsRv3HGkdGmYcGwKwkBy/AAFlaQUCRgAAIc4b+ht4HQaaHQimHWlzdJAaFQBBAAAUbhxvHG1OG08bEwQCoCAAABuwaXL3LxkAAAEAQgEBAC0BMgAyAfsCY24xRQAAGRoaGhsaHBoFAcMAADNKG0sbTBtNGwUeG3Bz8wDFAAiAGQHVDAAA")
\ No newline at end of file
diff --git a/api/search.index/6d042900a491.js b/api/search.index/6d042900a491.js
deleted file mode 100644
index 1ce929a0b..000000000
--- a/api/search.index/6d042900a491.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHTB0iZxhoGDobb3kFAcAAABVkGoQcBFccaXljAAOgcAAAGGFkbHQ6MAAAAQAAAAAACgAQAAAAsA4qESsRRxJIEkkSShIGGCUZZRx/HQEEADswAAABAAClAAIAxBMBAAMWowD7AmFl")
\ No newline at end of file
diff --git a/api/search.index/6d1af2cc7c06.js b/api/search.index/6d1af2cc7c06.js
deleted file mode 100644
index 44358837c..000000000
--- a/api/search.index/6d1af2cc7c06.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBNAAAEnR1muh27HSOGA6AQAAAaIqCAAAAc6m1zdAUASgAAFHAdcR1tTx0VAEYAABQSHRMdbekcbB3zhgJmcEsDoDAAABPLoEAAABd3ZHBzFwQAh7BwGT8AAaAwAAAOf7AwElIGpqCgAAAbVKDQAAAclCXACgFKBAAA")
\ No newline at end of file
diff --git a/api/search.index/6d2f52d47167.js b/api/search.index/6d2f52d47167.js
new file mode 100644
index 000000000..8c453e25b
--- /dev/null
+++ b/api/search.index/6d2f52d47167.js
@@ -0,0 +1 @@
+rn_("BQHBAAAEkh0FnR1xc/MBAXI7MAAAAQAAIgANAM4WDQBzGAMAFBkAAGIZAQCEGQAAUBoAAGoaAwB7GgAADxsBAG8bAQDmGwAAxBwAABMdAAA=")
\ No newline at end of file
diff --git a/api/search.index/6df452a196e6.js b/api/search.index/6df452a196e6.js
deleted file mode 100644
index 3a925816a..000000000
--- a/api/search.index/6df452a196e6.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("NQBAAAAG8hpp/Aj9CJYKlwoFAEMAAAZ2HXfRGyMDAqBQAAAc73N0AeMOAABlAEQAAAV4GXK1FrYWtxa4FrkWuha7FgUARwAAA8UbbLgYcUEAAFQYVxqtG64bVhzoHCgdQx3jAISwkBoqAAEUEAQ7MAAAAQAAEAAGAM8HCQAYGwAA9hsBANwcAAD6HAAATR0BAJ8CyKCQAAAdQqAQAAAOrqBwAAAdrKAgAAAW8qAgAAAdJwACig8=")
\ No newline at end of file
diff --git a/api/search.index/6e2518eb6d3b.js b/api/search.index/6e2518eb6d3b.js
deleted file mode 100644
index 7b879f6ef..000000000
--- a/api/search.index/6e2518eb6d3b.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBDAAADshxpJRsjBAKgcAAAHW9wdPRgGAAA5QABAAEAIUIAAA8YhRlxGgUAUgAABrwdZK0dFQBAAAAAxRxz9xYOGGUARQAABSEdcmEaWBtZG1obWxtcG10b84ECY2cVAEIAAAHHHGlTG7wbGwKwEBi8AvxlbBsCoIAAAB1XaXIlAE0AAAa3HWRQHVEdoh0FAcMAAAMIHRD1GvYabnPzgQJsbQUBxAAAMeYbexzMHPMcBRsdZXL3CwKIoHAAAB0OJogHOzAAAAEAACoAFADCDg4AyhcBANAXAQDjFwAA/hcAAAcYAwB5GAEAixgAAK8YAQDyGAAAZhkAAHkZAABgGgAAXhsCAHYbAAD4GwAAixwAAOUcAAD7HAAAAh0AABsCoCAAABPLYWQ=")
\ No newline at end of file
diff --git a/api/search.index/6e388734a019.js b/api/search.index/6e388734a019.js
deleted file mode 100644
index 2d2499f7b..000000000
--- a/api/search.index/6e388734a019.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAIGh1jBxuUHQUBwAAAAxYZBMkcYW/zAAJ0dfc1EQAAhwEBAAEAvgYBAIgBVQBAAAAFLRtlBBcFFxQZFRkqGysbGwKwYBsuAAFmdBsCoGAAABpvZW8BAQOgQAAAHR6wQBuQAAGgAAAAGCpmbXM7MAAAAQAAFAAGAKkXDgA5GwAAyBsAAPQbAAByHQAApR0BAAcNAomgQAAAHFqgMAAAGWCgQAAAHQCgUAAAGwagIAAAFwOggAAAHaAnCQc6MAAAAQAAAAAACwAQAAAAkw7fDuAO4Q7pFuoW5heLGl8cCh1rHZgd8wABaPahCgAAAQAGAAMMPAABAA==")
\ No newline at end of file
diff --git a/api/search.index/6e628b5a3409.js b/api/search.index/6e628b5a3409.js
deleted file mode 100644
index 3beda4d7f..000000000
--- a/api/search.index/6e628b5a3409.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBHAAAGnh1kqRteHSsCsBANJQpjbG21AUEAAAd6GQYZHWF2rRiuGGQZZRkuGi8aVhtXG5Uclhw/HUAdhQFEAAAHrxxgIxokGiUaJhonGigaKRpyc7EYshizGLQYtRi2GLcYShtLGxMBArCAHYAAAXN38+QXAAAxA0kBGwKwAArfC9RtbvsDYWV1")
\ No newline at end of file
diff --git a/api/search.index/6eafb4feb773.js b/api/search.index/6eafb4feb773.js
deleted file mode 100644
index 4aa6a68ba..000000000
--- a/api/search.index/6eafb4feb773.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAEQhp0hBsTggKw8B07AAFlcwEBAaEAAAAcz3TzDAkAAAEAAQAxQgAA+BYQGBEYWh0FAEUAABBDGEQYc70XSwOgUAAAFvawEArGDLFkbnL/AIWgAAAACu8QSUA=")
\ No newline at end of file
diff --git a/api/search.index/6f733fdc487e.js b/api/search.index/6f733fdc487e.js
deleted file mode 100644
index d2594a53c..000000000
--- a/api/search.index/6f733fdc487e.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUkAAD8bQBtBG0IbMUMAAPYb9xvcHPoc8wACbHU6MAAAAQAAAAAAEQAQAAAAnAydDJ4MnwygDKEMogyjDKQMkA4aESMR7hZ1GHYYEBkmGUQdRQBCAAAAgxxzDhk0Gugb6Ru9HDsDoCAAABbGZWdsBQHAAAADjxsKiB1pbjuEoEAAABzToVAAAB19AUkA")
\ No newline at end of file
diff --git a/api/search.index/704a51b9e541.js b/api/search.index/704a51b9e541.js
deleted file mode 100644
index 4100f86dc..000000000
--- a/api/search.index/704a51b9e541.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAW7hrvGgVtHWZoIwACoHAAABqBaXQBhhwAAAUARgAAEN4b/BxyjRsxQAAAPxtAG0EbQhsFAEoAAAYZHXY/HQUARQAADKwdYd8cI4ECoKAAABzvYXMlAEAAABMlGCYYaWkYahhaGUFCAAAuES8R2haqG1UdBQHDAAAGWh0AJBhtc7UBQQAAFGgcaRwA2RZtc5IOUxJUElUSVhJXElgSaxlsGRsbSBtJGwUBwAAABWsYEiIYIxh1eecuAMqgwAAAHaygcAAAGRGwYBhsAxDAQKgbOzAAAAEAACsADgDsCgIA4AwWAAkRAwDdEwEAShgAACoZAQBtGgEAmhsAAMwbAABSHAAA3xwAAO8cAAD+HAAAVx0AADsDoCAAABvAYWVvJQBCAAAFEBljkQ7dDt4OKwKhEAAAHW1hdQUAQQAADIYcci0J5woAiaDAAAAds6CQAAAbdLAACtoM76AwAAAdbQ2wBzowAAABAAA [...]
\ No newline at end of file
diff --git a/api/search.index/704f1468541f.js b/api/search.index/704f1468541f.js
deleted file mode 100644
index 9420a5073..000000000
--- a/api/search.index/704f1468541f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("QUIAAOIXdxh4GLkbUxxlAEMAAAZ+G3LvF/AX8RfyF/MX9Bf1FxsCoPAAAB0zYXIFAEMAAAQfHXV2GfMEAW/y9BYAAAsBZQBIAAAG1BxyhBqFGoYahxqIGokaihrHAQCFoKAAABvXoMAAABvaGCAF8qUMAACGCzsDoNAAABuEZWl1BQBAAAAQ3A6VG25cBBUAQAAACjwbdRMNFA2xQAAA8AoTEZ8YoBihGKIYoxikGIUbhhvQHDEdtQJBAAAmURlSGXobBnsbCLMdYm9y1wzYDNkM2gzbDNwM3QzeDO0W3BduGW8ZBQHAAAAPOh0IAhthZTcAAIWgMAAAEkuwMA7TAAGwYBuWAUI4QEA7MAAAAQAACQADAFIEAADqBwcAhg4AAC8PyaBAAAAceKAQAAAdfbCwG5YBQqAgAAAWxAATjgo=")
\ No newline at end of file
diff --git a/api/search.index/7082e97eb2fb.js b/api/search.index/7082e97eb2fb.js
new file mode 100644
index 000000000..242785229
--- /dev/null
+++ b/api/search.index/7082e97eb2fb.js
@@ -0,0 +1 @@
+rn_("BQFAAAAGJh0BWxwzccscFQBEAAAD3htsdRndHDFIAABLHU8dYR1pHTFCAAByHIActBy+HAUBwAAADLEdDZcdYWgPB4eggAAAHWuggAAAHXShUAAAHbmgoAAAHaEeABzzgQJwdisCoCAAAB0vb3IFAcAAAAKPGxRZGO4caW8FAcAAAAspGwOYHGF0GwKwABpPAyVjZAUBwQAADNkcAysZbW6BRgAAAxkEGScbNRuNG5kb3Bt2HOEcN1YAjLBwHTAADaAwAAAclqAgAAAcWqBAAAAYlqAwAAAcl6CAAAAdGtapEzowAAABAAAAAAAZABAAAAAYDRkNSg1LDUwNTQ1ODU8NUA1RDVINUw3NE9kT9xb7FgAXBxcTGGIYYxgfGYMZHhofGgkb")
\ No newline at end of file
diff --git a/api/search.index/70839a2721ec.js b/api/search.index/70839a2721ec.js
deleted file mode 100644
index 98b746726..000000000
--- a/api/search.index/70839a2721ec.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUAAAD8bQBtBG0IbBQBKAAAGGR12Px0FAEUAAAysHWHfHCOBAqCgAAAc72FzJQBAAAATJRgmGGlpGGoYWhlBQgAALhEvEdoWqhtVHQUBwwAABlodACQYbXO1AUEAABRoHGkcANkWbXOSDlMSVBJVElYSVxJYEmsZbBkbG0gbSRsFAcAAAAVrGBIiGCMYdXnnLgDKoMAAAB2soHAAABkRsGAYbAMQwECoGzswAAABAAArAA4A7AoCAOAMFgAJEQMA3RMBAEoYAAAqGQEAbRoBAJobAADMGwAAUhwAAN8cAADvHAAA/hwAAFcdAAA7A6AgAAAbwGFlbw==")
\ No newline at end of file
diff --git a/api/search.index/71554ce96987.js b/api/search.index/71554ce96987.js
deleted file mode 100644
index 1215d433d..000000000
--- a/api/search.index/71554ce96987.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAA1fBz0HFwdXR0MZh1hafMEAWb0fBgAAPED2gAoADFGAAB/GQobCxsNHfOBAnB2FQBBAAAExBxmlR2WHbUAQgAABOQcZhYSFxIYEhkSLBktGUQbRRtGG0cbmR2aHfsDYW9y")
\ No newline at end of file
diff --git a/api/search.index/71689436b3d3.js b/api/search.index/71689436b3d3.js
new file mode 100644
index 000000000..319a3e817
--- /dev/null
+++ b/api/search.index/71689436b3d3.js
@@ -0,0 +1 @@
+rn_("NQBFAAAWth23HWQiHSMdmB2ZHQEGADswAAABAAAfAAEA1BgfAAUAQQAABrwdZKUdE4ICoEAAAB2CbW/7AmlvBQBFAAAGdxxmZBgFAEIAAAa7HWSiHfsCaXQFAcEAABBjGmQaCYYZZnN1AUIAAAFSGwSSHGlzOhk7GVUaVhqhG+cb6BvQHAUAQgAAArQdbakdI4cCoIAAAB24YWtjAgOgoAAAHa5hY2vzBRYAAAEA8AYVAEIAAAfrHG3RF60YI4ECoDAAABoiYmszAQOgAAAADKhlaW/yYQ0AACYAAYMCoNAAAB19oQAAAB2NY3AFAEgAAAdxHXPWG/MCAmZ386sNAAABAAEAFQBEAAAGvx1kcB2wHQEDAaAwAAAY02o7MAAAAQAAyQACADENAABBEMgAAQOEoEAAABltoHAAABmFoDAAABjSoJAAABs4AgMCOzAAAAEAANQAAgAwDQAAbQ/TAAUBwAAABiAdDa8dbG4 [...]
\ No newline at end of file
diff --git a/api/search.index/7179640e104f.js b/api/search.index/7179640e104f.js
deleted file mode 100644
index ba32902d4..000000000
--- a/api/search.index/7179640e104f.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQFAAAAFSxoQ5xboFmVzuBO5EyFFAAB0HOwc7Rz7AmpwBQHBAAAE4RwMhx1pb/sCZW8VAEIAAAYZHXY/HUAdBQBEAAAndB2FHYYdc+scM4IDsAAdgAABaW5z+wJhcg==")
\ No newline at end of file
diff --git a/api/search.index/71d8391d304f.js b/api/search.index/71d8391d304f.js
new file mode 100644
index 000000000..042124af8
--- /dev/null
+++ b/api/search.index/71d8391d304f.js
@@ -0,0 +1 @@
+rn_("BQBGAAAGdxxmZBgVAUYAAAZ2HAgaHWJ3YhhjGPMBAmNz9t8KAAABAO8BAQABAGQNKwOgEAAAG8Z50m1Gr5BrcnY=")
\ No newline at end of file
diff --git a/api/search.index/7298eec6b5a8.js b/api/search.index/7298eec6b5a8.js
deleted file mode 100644
index e26f2cad0..000000000
--- a/api/search.index/7298eec6b5a8.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHBAAAMrBwJFxtjcwUAQwAAASgdZRgb8wgBbAFSGAAAMUMAAHcaeBqvG1EcBQBHAAAMrB1h3xwjAwOgIAAAHVWgYAAAG3xydHYB7xwAAPsDaG9yJwQAiKCgAAAbFrDgHVgAAaBwAAAdqKCgAAAaT6CQAAAZbaDQAAAdBhWEBwHfEwAA")
\ No newline at end of file
diff --git a/api/search.index/72b2eb87049f.js b/api/search.index/72b2eb87049f.js
new file mode 100644
index 000000000..e08bd7556
--- /dev/null
+++ b/api/search.index/72b2eb87049f.js
@@ -0,0 +1 @@
+rn_("BQHCAAASmRiaGBKbGJwYc3kFAEUAAAaIHWIXHRUAQQAABMocZpsdnB0VAEIAAATqHGafHaAd+wJhbyFFAABcGrMbtBvTAoSwMBvAAAEAqBDzixkAAHwB1QEFAEsAAAbDHWS1HbuEoLAAAByxAUEB")
\ No newline at end of file
diff --git a/api/search.index/72ec1664a2c1.js b/api/search.index/72ec1664a2c1.js
new file mode 100644
index 000000000..11edc3c94
--- /dev/null
+++ b/api/search.index/72ec1664a2c1.js
@@ -0,0 +1 @@
+rn_("BQHAAAA1ghz6HGIdYx0MbB1hafMAAWb2gRgAAGMDjwCPAEsAKADzAwFyAZMbAAAFAcEAAASSHQWdHXFz8wYBcjowAAABAAAAAAAJABAAAACEGWoaaxpsGm0aDxsQG28bcBsTHfsCcHYVAEgAACA7Gjwa7RtznxvCHFFCAACeGJ8YoBihGKIYoxj7AmZz+wJlbyUAQAAABMocZrwcmx2cHSsCoBAAABsfcnMFAFEAAAbEHWS6HRMDAqCAAAAb0GRzASkNAADFAEEAAATqHGYaEhsSHBIdEjEZMhlfGkobSxtMG00bnx2gHQUASgAABr8dZLAdIUgAADUdNh1uHSFDAAB8HH0c9Bz7A3B0dSMEAqBgAAAdK21zAWcdAAATgQKwIBtcAAFpbvsCcnT3AACFoAAAAAqqAUgD8lQEAAB7GA==")
\ No newline at end of file
diff --git a/api/search.index/73ea6898a0eb.js b/api/search.index/73ea6898a0eb.js
new file mode 100644
index 000000000..afa9030be
--- /dev/null
+++ b/api/search.index/73ea6898a0eb.js
@@ -0,0 +1 @@
+rn_("QUIAAHkZiBmJGWoczBxRQQAAJBsoG8wbzRsVHRYdBQJAAAAXwBvBGxdVG1YbBAgbZmx0rw77AmVvKwKgYAAAGX9jdDMAA6BgAAAdH2FydjowAAABAAAAAAAMABAAAACcCrIYsxhpGWoZMxo0GlwbXRubHJwcRR1GHQ==")
\ No newline at end of file
diff --git a/api/search.index/7442a275e381.js b/api/search.index/7442a275e381.js
deleted file mode 100644
index a7d32da82..000000000
--- a/api/search.index/7442a275e381.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBFAAAFRB1j5hznHAUASQAABoIdYhEdo4OEoQAAAB2hoAAAABl1KAASBQBJAAAGpB1kcx0ThAOgwAAAHYOggAAAHV9mcHP7AmZsBQBaAAAGvR1krx37AmFl")
\ No newline at end of file
diff --git a/api/search.index/74cf20c2a787.js b/api/search.index/74cf20c2a787.js
deleted file mode 100644
index b49a289f9..000000000
--- a/api/search.index/74cf20c2a787.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHCAAASlBiVGBKWGJcYc3kFAEUAAAaCHWIRHRUAQQAABMQcZpUdlh0VAEIAAATkHGaZHZod+wJhbyFFAABXGq0brhvTAoSwMBu6AAEAqBDzhhkAAHwB1AEFAEsAAAa9HWSvHbuEoLAAAByrAUEB")
\ No newline at end of file
diff --git a/api/search.index/7544272abd01.js b/api/search.index/7544272abd01.js
new file mode 100644
index 000000000..3562c5d61
--- /dev/null
+++ b/api/search.index/7544272abd01.js
@@ -0,0 +1 @@
+rn_("BQHAAAADdxsAghhhcwUBwwAAF0MdRB0SpBylHGRzUwEDoFAAABvVZm1u8hEXAACtAAUBwAAAA0gaABAXYXMFAcAAAAQRG1A7GDwYPRg+GD8YQBhpcwUBwwAAFxEdEh0S0xvUG2Rz8wCEIDAEOjAAAAEAAAAAAAcAEAAAAD4RxxLIEskSyhLLEvAcph0=")
\ No newline at end of file
diff --git a/api/search.index/754de0971f6a.js b/api/search.index/754de0971f6a.js
deleted file mode 100644
index 0384a5530..000000000
--- a/api/search.index/754de0971f6a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAAAHBh0S1xNnGW95cUQAAKQbpRumG6cb8BvxG/Ib8xtXAAHFsGAZZAABoEAAABgsoKAAAB1AAAggGjowAAABAAAAAAAIABAAAAD0CvUK9goADQENAg1AESwSSxg=")
\ No newline at end of file
diff --git a/api/search.index/756c04caa596.js b/api/search.index/756c04caa596.js
deleted file mode 100644
index 3d9b441e7..000000000
--- a/api/search.index/756c04caa596.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBGAAAFJB1ychsxRwAAMhvRHNIcMx31AEYAAAl9HXJaGDgZORk6GTsZPBk9GT4ZNBt+HH8cgByBHPUc9hz/HAUBwAAAARgRAhwbZXljAAOwYByrAPlkdHb3ehcAAAEAAQCEAYwB5wIuAAUASwAAGIAdgR13Xhz7Amx0cwCEoDAAABPGIUgAOzAAAAEAAAcAAgA7EQAA6BIGAA==")
\ No newline at end of file
diff --git a/api/search.index/75ceabb65838.js b/api/search.index/75ceabb65838.js
deleted file mode 100644
index 05fb69a03..000000000
--- a/api/search.index/75ceabb65838.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHFAAAoFR1THVQdBIkdYW8FAcAAAARmGyJOGU8Z4xxveRUASgAABrkdZGodqh0FAcAAAAIBHQmYHWlvEwgCoDAAAB05Zmn3mxwAAEIAAQBFAAwAAQA4ACFFAAB0HYUdhh0lAEAAAAOaHGl2HHcc7hwhQgAAYhpjGgQdMUEAAGMbZBtlGzQdBQHAAAAVcxxnHQKZHHV58wGEAgEDOjAAAAEAAAAAAAwAEAAAAGYYSRlKGUsZTBlNGQ0bnBt9HOIcSx1WHYMd+wJlbPMAA3B0dQHFFgAAFQBBAAAFjht3ExgUGBUAQAAAFHAdcR1tVBtPHfsCZG5FAEQAAACDHHMOGTQa6BvpG70cBQBBAAAl5RugHKEcd/Qa5xwCyaCAAAAcmKAgAAAX26BgAAAdJUBMBQs7MAAAAQAABgADAD4SAwDrHAAAYR0BABsCoAAAAA6HaXk=")
\ No newline at end of file
diff --git a/api/search.index/7616fcd910ac.js b/api/search.index/7616fcd910ac.js
new file mode 100644
index 000000000..2c441ccc8
--- /dev/null
+++ b/api/search.index/7616fcd910ac.js
@@ -0,0 +1 @@
+rn_("BQHAAAAU7xbwFhO/E8ATZnQFAEUAAAZMHXbIGwUBwAAABn8bABgRY3NXAQCFoJAAABshoCAAAA5+YQAD82EBAACwBxAE")
\ No newline at end of file
diff --git a/api/search.index/761fd217c0bb.js b/api/search.index/761fd217c0bb.js
deleted file mode 100644
index c8cc24ff0..000000000
--- a/api/search.index/761fd217c0bb.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBEAAAHRx1wBhcFAcAAABIXGQEdGQodmB1pbxMAA7AwGj8C+rAwGkAAAWZpcDowAAABAAAAAAAOABAAAADeFnIYcxhfGWkaahprG3MbmxzdHN4cIx0vHTAdaB1jAAOgMAAAGWJmc3QBhxcAAA==")
\ No newline at end of file
diff --git a/api/search.index/7642cbcbfaa5.js b/api/search.index/7642cbcbfaa5.js
deleted file mode 100644
index 5b718ae01..000000000
--- a/api/search.index/7642cbcbfaa5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHAAABD+Rf6F/sX/Bf9FzekG6UbphunG291IwACoJAAAB11b3IB+ggAAAUAQgAABrwdZK0d8wABbQEGEQAABQHAAAARGxkcGQh9HWVvcUEAAOQW5RZ/GIAYRxpNGqsb8RwFAEoAAAa1HWScHWcDAYagMAAAGPGgIAAAGRqCCQM6MAAAAQAAAAAAHQAQAAAADxcRF0gYSRhaGPoY+xg4GTkZOhk7GTwZPRk+GRgaNBt3G8kbYBx+HH8cgByBHLkcuhzLHPUc9hz/HEYdBQBCAAACrh1tox0jhwKggAAAHbJhayMLAqCgAAAdqGFjAfAcAAA7hKAgAAAbCaCAAAAdNghAhBUEQAAAA8QWFM4TzxMHZRgElhcKyRthZWl0d58KoAo3AQCFsGAdCgCOsHAdOwABEKEE8x4SAAABAGAF")
\ No newline at end of file
diff --git a/api/search.index/7662c2b997b8.js b/api/search.index/7662c2b997b8.js
new file mode 100644
index 000000000..e093095bb
--- /dev/null
+++ b/api/search.index/7662c2b997b8.js
@@ -0,0 +1 @@
+rn_("MUgAACgbzBvNGxYdEwMCoFAAAB0nZ3I7MAAAAQAAGwAJALoOCAADFwMALRgBAEsaAABmGgAAVRsBAF4bBQDYGwEADx0AAAUARgAABrYcZgoZ8wIBc/IlDQAAlAH7Amx08wABYfIWAwAA9Q0=")
\ No newline at end of file
diff --git a/api/search.index/7663ad584f3a.js b/api/search.index/7663ad584f3a.js
new file mode 100644
index 000000000..f63233bad
--- /dev/null
+++ b/api/search.index/7663ad584f3a.js
@@ -0,0 +1 @@
+rn_("BQHDAAAASBEhGx1ZHVodZW9hQQAAmxecF50XnhefF6AXoRcFAsMAAAhrHQKAHAhPHWJ1dyMFAqBgAAAbNWJwAdkTAAD7A2FtdQ==")
\ No newline at end of file
diff --git a/api/search.index/76cdee197e52.js b/api/search.index/76cdee197e52.js
new file mode 100644
index 000000000..0786b8220
--- /dev/null
+++ b/api/search.index/76cdee197e52.js
@@ -0,0 +1 @@
+rn_("BQBFAAAGdBxiYBgFAEcAABZiHWMdZnMcE4MCoDAAABphcHMbAqBwAAAbyWFlCQKhAAAAHU2gsAAAHQ1hb0sDoEAAABxYoKAAAByYY3F0BQBJAAAGTB12yBsVAEwAAAa+HWR/Ha0dYUMAAKIXoxekF6UXphenF6gX+wJhZvMAAXQBnwoAAAUBwAAABiYdAVscM3EFAcAAAAKPGwTuHGlvRwKEhqAwAAAclqAgAAAcWqBwAAAc3aAwAAAcl8CIAyOBAqBgAAAbxmN0Vx4AiaCQAAAbx6DwAAAdPqFAAAAddRyRFgGTDQAA")
\ No newline at end of file
diff --git a/api/search.index/76e7dd12771b.js b/api/search.index/76e7dd12771b.js
new file mode 100644
index 000000000..959d44635
--- /dev/null
+++ b/api/search.index/76e7dd12771b.js
@@ -0,0 +1 @@
+rn_("MUQAAJIZkxmaG+IbBQBRAAAGwx1ktR0JAqBQAAAbhqEwAAAde2NyBQHEAAAoGx1ZHVodBI8dYW/7AmFlIUIAAFMZVBnpHAUBwAAAMsYYxxhxGhwbA2wba3BFAkEAABUsGS0ZGsUcxhwz8hfzF3cZ4xtvc3RaDVsNXA1dDfIaGwOgIAAAHT6wEBcPAUJuc3gFAcQAAAHxFwKYGGF1vwGFoAAAAAkCkUBAFQBIAAAGvx1kcB2wHSOBAqBwAAAaGGVtBQHAAAACBx0Jnh1pbxMHAqAwAAAdP2Zp96EcAABCAAEARQAMAAEAOAAbArAwG0kBi2FyIUUAAHodix2MHSUAQAAAA6AcaXwcfRz0HCFCAABnGmgaCh0xQQAAaRtqG2sbOh0FAcAAABV5HG0dAp8cdXnzAYQCAQM6MAAAAQAAAAAADAAQAAAAaxhOGU8ZUBlRGVIZEhuiG4Mc6BxRHVwdiR37AmVsBQBCAAAGwh1 [...]
\ No newline at end of file
diff --git a/api/search.index/77084c5a2612.js b/api/search.index/77084c5a2612.js
deleted file mode 100644
index 29cd7bb94..000000000
--- a/api/search.index/77084c5a2612.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUMAANYTuBdiGDMaFQBFAAAIGh1jBxuUHQUAQwAACkAdd0sYBQHAAAAlchhzGF8ZAQYZaXVLA7AgGQgADrBgGGIB0WJydFuEoEAAABzJoCAAAB01AUBBBQBBAAAUgRuCG20bGvMCAWnyEhkAAAEAFQBBAAAU+Bz5HG3CHMMc8wcBafWsGwAANwABAA4BbQBFAEEAAAQeHWbIG/Qbch2lHaYdEwaEsCAZFAABoGAAAB2UoIAAAB2gAAEHAYsaAAAFAcMAABW/HMAcBh4bbnQFAcAAABOSGHgbG5QclxxjcSUAQQAAFGgcaRxtGxtIG0kbEwSEoKAAAB1aoCAAABuqoKAAAB0/ACEROjAAAAEAAAAAAAcAEAAAAEoYKhkrGW0abhqaG8wb/hwFAcAAAAEQDQERDTI51/4AzKAgAAANErDgHTsAAQNNOBY7MAAAAQAAMwAWALAMBwDDDAAAHREAADURAAAvEgEAvBICALE [...]
\ No newline at end of file
diff --git a/api/search.index/7732c54d6143.js b/api/search.index/7732c54d6143.js
new file mode 100644
index 000000000..c0caa16f4
--- /dev/null
+++ b/api/search.index/7732c54d6143.js
@@ -0,0 +1 @@
+rn_("FQBEAAAD3htsdRndHDFIAABLHU8dYR1pHTFCAAByHIActBy+HAUBwAAADLEdDZcdYWgPB4eggAAAHWuggAAAHXShUAAAHbmgoAAAHaEeABzzgQJwdisCoCAAAB0vb3I=")
\ No newline at end of file
diff --git a/api/search.index/777118312249.js b/api/search.index/777118312249.js
deleted file mode 100644
index ad9234603..000000000
--- a/api/search.index/777118312249.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBCAAAD1BdhIRIiEiMSJBIlEiYSJxL1AkAAAAMmEQGcDRJ0G5sdYWV1nQ6eDp8OoA79FtkXWBpZGuoa6xodG1Ebgxu9GyodNx0rAqBgAAAYy3B0awOgAAAABFtkbnQ=")
\ No newline at end of file
diff --git a/api/search.index/77721d960d9b.js b/api/search.index/77721d960d9b.js
new file mode 100644
index 000000000..0803d1cc5
--- /dev/null
+++ b/api/search.index/77721d960d9b.js
@@ -0,0 +1 @@
+rn_("BQHAAAADCR0BgQ5hbwUBwAAAAwsbEoAYKxtydRUARAAABr4dZH8drR3zAgFiAVgdAAAbAqBAAAAbHml0MUMAAEobSxtMG00bFQBFAAAGqh1keR2nHdMAhKDAAAAdFSCgAvcfEQAAAQCwAgEACQT2AJ0DGwKg4AAAHXtldBUAQQAAEG0bbhtz8xr0GhMCAqAwAAAZfGluOzAAAAEAAAoABQA6EQAArBgAAFEaAACqGwMA9hsDADsDsEAa8QA1ZWx46wSgUAAAEUA4aW9y")
\ No newline at end of file
diff --git a/api/search.index/78140875e81a.js b/api/search.index/78140875e81a.js
deleted file mode 100644
index 38d91c375..000000000
--- a/api/search.index/78140875e81a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("FQBEAAAGuR1kah2qHUMAA6CAAAAdGrCQGYIA0GNlbDowAAABAAAAAAAQABAAAAAICQkJxwrICskKygrNC84LKw2lDaYNpw2zDigSzxcHG5Qd")
\ No newline at end of file
diff --git a/api/search.index/78418167be52.js b/api/search.index/78418167be52.js
deleted file mode 100644
index 0675cd0c1..000000000
--- a/api/search.index/78418167be52.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHDAAAARBEhFR1THVQdZW9hQQAAlxeYF5kXmhebF5wXnRcFAsMAAAhlHQJ6HAhJHWJ1dyMFAqBgAAAbMGJwAdUTAAD7A2FtdQ==")
\ No newline at end of file
diff --git a/api/search.index/785ad78e0050.js b/api/search.index/785ad78e0050.js
deleted file mode 100644
index 2a0c5d322..000000000
--- a/api/search.index/785ad78e0050.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUUAAHEZghqDGjFFAAA/G0AbQRtCG3UBRAAABykbAMcWb3MoESkRRBJFEkYS/BhOG3UdBQBAAAADaxxqYRwlAEMAABEoHUMdZRgbTR1OHfMFAmxz9fgVAABaAtgBAQAGAQUBwAAABLMdBk0bY3TXBgCHoEAAABzgoLAAABzFExESOjAAAAEAAAAAAAkAEAAAAH4O2g7bDsoTgheDF4QXhReGFzId")
\ No newline at end of file
diff --git a/api/search.index/785fa379d50c.js b/api/search.index/785fa379d50c.js
deleted file mode 100644
index 5a7ca9d9c..000000000
--- a/api/search.index/785fa379d50c.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBBAAAJyBtz0wxFAEQAAAfSG2wUHUUdSR1bHWMdcUAAAC4RLxHaFg8YhRlxGqobVR1RQAAAyhOCF4MXhBeFF4YX8wCEqCAA9VMNAAABAAEAAQABAA==")
\ No newline at end of file
diff --git a/api/search.index/7869a0df9ee8.js b/api/search.index/7869a0df9ee8.js
new file mode 100644
index 000000000..959f0c1ba
--- /dev/null
+++ b/api/search.index/7869a0df9ee8.js
@@ -0,0 +1 @@
+rn_("IUUAAGAZYRmUGwUARgAABoQdZgMdBQBFAAAGHh1iMRsFAEAAAASTHGPEG/MCAnN3ATsbAAArAqBgAAAaemFppwIAhrBgHZUAAaCAAAAcV6AwAAAa9zAAFzswAAABAABWABMA8woCAAANAQCdDQAAhg4AAJEOAACXDgAAEREAAFISAADMEh8AxxMAAPwWAAAVGAEAGBgBANEYAADUGB8ASRoBAEkbAADUHAAAYB0AAA==")
\ No newline at end of file
diff --git a/api/search.index/788a35b3a7cf.js b/api/search.index/788a35b3a7cf.js
new file mode 100644
index 000000000..daabbdb5b
--- /dev/null
+++ b/api/search.index/788a35b3a7cf.js
@@ -0,0 +1 @@
+rn_("BQHAAAAJex04qhurG6wbrRtvcgUAQgAABsIdZLMd8wABbQEKEQAABQHAAAARIBkhGQiDHWVvcUEAAOgW6RaEGIUYTBpSGrEb9xwFAEoAAAa7HWSiHWcDAYagMAAAGPagIAAAGR+CCQM6MAAAAQAAAAAAHQAQAAAAExcVF00YThhfGP8YABk9GT4ZPxlAGUEZQhlDGR0aORt9G88bZhyEHIUchhyHHL8cwBzRHPsc/BwFHUwdBQBCAAACtB1tqR0jhwKggAAAHbhhayMLAqCgAAAdrmFjAfYcAAA7hKAgAAAbDqCAAAAdPAhAhFMAA7BwHUEAAWlwdAGDFwAA")
\ No newline at end of file
diff --git a/api/search.index/7922f79c7efc.js b/api/search.index/7922f79c7efc.js
deleted file mode 100644
index 43e3272f5..000000000
--- a/api/search.index/7922f79c7efc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("VQFBAAAjGxEcEcsYAMMMZnM1EjYSNxI4EjkSOhIFAEEAACXlG6AcoRx39BoThwKgMAAAGw1lc5uEoCAAABhYoIAAABkPAQgJ")
\ No newline at end of file
diff --git a/api/search.index/7947378f735b.js b/api/search.index/7947378f735b.js
deleted file mode 100644
index b3c5df831..000000000
--- a/api/search.index/7947378f735b.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("AQEAOzAAAAEAAMgAAQDgE8gAMUIAAI0ZjhmUG9wb+wJvdfMAAW07MAAAAQAA0QAEAF4BAADdCAAA+QrOAK4OAAA=")
\ No newline at end of file
diff --git a/api/search.index/795da0168df0.js b/api/search.index/795da0168df0.js
new file mode 100644
index 000000000..140bd863b
--- /dev/null
+++ b/api/search.index/795da0168df0.js
@@ -0,0 +1 @@
+rn_("RQBAAAAWth23HWQiHSMdgh2YHZkdFQBKAAAGtx1kIx2ZHQUBwQAAB8MbA4UbZXDzgQJpcgUARAAAAc0cacIb8wYBZvMDGAAAewHnABUASwAABrYdZCIdmB0rAqCQAAAc23B4+4QRAQI=")
\ No newline at end of file
diff --git a/api/search.index/7983547eee74.js b/api/search.index/7983547eee74.js
new file mode 100644
index 000000000..41f628549
--- /dev/null
+++ b/api/search.index/7983547eee74.js
@@ -0,0 +1 @@
+rn_("BQHBAAAClRgFhRphZQUBwQAAApQYBYQaYWVrA6AAAAAOnTEyM/UAQAAABdMXddcKugy7DLwMvQy+DL8MwAzBDMIMwwzFF8YXoxu2G4kcBQLBAAAQhw4QGRCeDnsbAyEdZm5zMUMAAHwZkRt1HNscBQHBAAAFthsGlBxmbjUAQAAABDQdcG0bbhuZHEcdBQHAAAAHaB0BvRxhbwUBxAAAAqAdAZwdYW8jhQKgAAAAHTNkZgUBxAAABpEdA4Edb3QbAqDgAAAdrGhvZzQBiqBQAAAa7qAwAAAc4KGAAAAdwbBAHRgAAaBAAAAdHS6YBzowAAABAAAAAAAJABAAAACkDqUOpg7zGvQa/BqIHM0c7xxyHQEAArBAHHAAUaAgAAAdC2VyOjAAAAEAAAAAADYAEAAAADQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDeUXBhgHGAgYXhhwGAMZBBl [...]
\ No newline at end of file
diff --git a/api/search.index/79b525175077.js b/api/search.index/79b525175077.js
deleted file mode 100644
index 158646ca6..000000000
--- a/api/search.index/79b525175077.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("ZQBEAAAGdRxyUxlUGVUZVhlXGVgZWRkjgwKgYAAAGwRjdCUAQQAAA20Zbt8MLRFTGPsCb3MFAcUAAAUDGxEfGw8dZW9rhLAgDNAAAaCgAAAdOBEBAQ==")
\ No newline at end of file
diff --git a/api/search.index/79bd521a4785.js b/api/search.index/79bd521a4785.js
deleted file mode 100644
index bf1a80da0..000000000
--- a/api/search.index/79bd521a4785.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUoAAPAb8RvyG/MbFQBAAAAUyBwfHXXVF3YZBQHCAABSHxkgGSEZIhkjGSQZVHkaehp7GnwafRp+Gmt2UUoAAOob6xvsG+0b7hvvG+8BxbBAF+cAAQAIRgE=")
\ No newline at end of file
diff --git a/api/search.index/79c4a8fc2263.js b/api/search.index/79c4a8fc2263.js
new file mode 100644
index 000000000..f4d03c1eb
--- /dev/null
+++ b/api/search.index/79c4a8fc2263.js
@@ -0,0 +1 @@
+rn_("NQBCAAAGvh1khhpIHX8drR0rAqBgAAAa/GZ0FQBEAAAEcBxl5Rd4GYuEsGAc0wDesAANFwAyoAAAAAjtZAEABQBFAAAGdBxiYBgFAEcAABZiHWMdZnMcE4MCoDAAABphcHMbAqBwAAAbyWFlCQKhAAAAHU2gsAAAHQ1hb0sDoEAAABxYoKAAAByYY3F0BQBJAAAGTB12yBsFAcAAAAYmHQFbHDNxBQHAAAACjxsE7hxpb0cChIagMAAAHJagIAAAHFqgcAAAHN2gMAAAHJfAiAMjgQKgYAAAG8ZjdBcPAoigkAAAG8eg8AAAHT6hQAAAHXUMkRYBkw0AAPsDZXV5")
\ No newline at end of file
diff --git a/api/search.index/79d26d46af90.js b/api/search.index/79d26d46af90.js
new file mode 100644
index 000000000..0d628bbba
--- /dev/null
+++ b/api/search.index/79d26d46af90.js
@@ -0,0 +1 @@
+rn_("IUgAAG4abxpxGwUBxgAAEi8bMBsggRmCGQobcnMhRQAAbhhvGF8Z+wNjbnRRSAAAahprGmwabRpvG3AbBQHIAAAjfBx9HPQcKDUdNh1uHXB0+wJhciFMAADnG+gb0ByvAoagAAAADaGgMAAAF6mgIAAAFtw4gAMhQgAA2Q7aDtsO+wJhZQ==")
\ No newline at end of file
diff --git a/api/search.index/7a471de194d2.js b/api/search.index/7a471de194d2.js
deleted file mode 100644
index e5e0a13d7..000000000
--- a/api/search.index/7a471de194d2.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("cUAAALwWIxokGiUaJhonGigaKRoFAcEAAATUHBUnG68ccXMFAcsAAASMHQWXHXFzYUUAAPga+Rr6Gvsa/Br9Gv4aJwcAh6DAAAAc2LBAGQkAAaBwAAAbJhGhAzswAAABAAAkAAgAHxEBADESAwCxGAYALhkGAIQaBgAOGwYAPBsAAEobAQAbA6FAAAAdbaAgAAAY82VoaQ==")
\ No newline at end of file
diff --git a/api/search.index/7a6f96a98399.js b/api/search.index/7a6f96a98399.js
deleted file mode 100644
index a34a9276d..000000000
--- a/api/search.index/7a6f96a98399.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("cUAAALwWIxokGiUaJhonGigaKRoFAcEAAATUHBUnG68ccXMFAcsAAASMHQWXHXFzYUUAAPga+Rr6Gvsa/Br9Gv4aJwcCh6DAAAAc2LBAGQkAAaBwAAAbJhGhAzswAAABAAAkAAgAHxEBADESAwCxGAYALhkGAIQaBgAOGwYAPBsAAEobAQAbAqAwAAAdLGFl")
\ No newline at end of file
diff --git a/api/search.index/7a955a65c6cf.js b/api/search.index/7a955a65c6cf.js
new file mode 100644
index 000000000..156d472e4
--- /dev/null
+++ b/api/search.index/7a955a65c6cf.js
@@ -0,0 +1 @@
+rn_("UUMAAMITwxPEE8UTGBcZFwUASgAAFHYddx1tVR0VAEYAABQYHRkdbe8cch0zgQOg0AAAHVBmcHNTgQOgIAAAHbJlaXU=")
\ No newline at end of file
diff --git a/api/search.index/7aa0d3c0fd6a.js b/api/search.index/7aa0d3c0fd6a.js
deleted file mode 100644
index bce1e6475..000000000
--- a/api/search.index/7aa0d3c0fd6a.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUYAAIcciByJHIocFQBRAAAGuB1keR2nHRsCoAAAABEIYW9hRgAAIBtuHHIcrRyxHBgdgh0TAAOgUAAAHUSgkAAAGnZiY3A6MAAAAQAAAAAAJwAQAAAABA0FDQYNBw0IDQkNCg0LDQwNDQ3HExYXFxd9F34XzhfdF1sYZBipGKoYARkHGUgZWxlcGXEZghqDGo0ajhosG4wbjhvlG6AcoRzmHOccER0FAFQAAAa5HWSqHQUASwAABr0dZK8dGwKgsAAAHKthbwGDAqCQAAAdJ6EQAAAdiGl1GwKwUBj2At5hZTcOAIigsAAAHGewIBenAAGgQAAAF8Uo8AU7MAAAAQAAFAAFAAsJAAC1ChAAFxEAACQRAAA9EgAAW4SgEAAAHbKwQBkeAreQAEQBAQKwYB2PAAGgcAAAGnVlZjswAAABAABLAAoA8QoCAP4MAQCPDgAAlQ4AAMgSHwDMGAAAzxgfAEQaAQBDGwAAzhw [...]
\ No newline at end of file
diff --git a/api/search.index/7ac466e511ac.js b/api/search.index/7ac466e511ac.js
deleted file mode 100644
index 5b195ca67..000000000
--- a/api/search.index/7ac466e511ac.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQHEAAARexzzHAUbHWVyEwUCoCAAABpxYnL20BcAAAEAqAABADUAtwABAQOgQAAAGKewYByVAAGAGCA08AFmcHM7MAAAAQAAEAAGAAsYAAAtGgAAchoBAFUbAACeGwUA6hsFAPMAAm509D8bAAABAAEAAQA=")
\ No newline at end of file
diff --git a/api/search.index/7af6d42dd3c9.js b/api/search.index/7af6d42dd3c9.js
new file mode 100644
index 000000000..2a576f98a
--- /dev/null
+++ b/api/search.index/7af6d42dd3c9.js
@@ -0,0 +1 @@
+rn_("BQBBAAAGvB1kpR0ThgKgQAAAHYJtbwUATAAABoQdZgMdGwKgIAAAHSpvdcsEsIAbnAFCoKAAABzmYXFzdBsCoDAAABkJZW8=")
\ No newline at end of file
diff --git a/api/search.index/7af89a2412e6.js b/api/search.index/7af89a2412e6.js
new file mode 100644
index 000000000..dcdd63722
--- /dev/null
+++ b/api/search.index/7af89a2412e6.js
@@ -0,0 +1 @@
+rn_("FQFBAAAFUBoQ6xbsFmVzvBO9EwUBwQAABOccDI0daW/7AmVvFQBCAAAGHx12RR1GHSOCA6BAAAAc8bAAHYYAAWluc/sCYXI=")
\ No newline at end of file
diff --git a/api/search.index/7b044fc68957.js b/api/search.index/7b044fc68957.js
new file mode 100644
index 000000000..069a449e2
--- /dev/null
+++ b/api/search.index/7b044fc68957.js
@@ -0,0 +1 @@
+rn_("BQHAAAAkLBvfG7UcAn0ZcHUVAEYAABB1G3Ybc3caeBpBQgAAgxuEG5gbexzaHPOBAmVpRQBCAAAYohyjHGQwEVASURICGTIbAQIAOzAAAAEAAMoAAgCFDgAATxHJAPMAAW07MAAAAQAAzAADAO4IAADCCcoA3BYAABUAQAAAJXYZhxqIGneADjgdBQBBAAARcxl0GWWIDt8LyKDgAAAdN7AwHHAAUUALyAE=")
\ No newline at end of file
diff --git a/api/search.index/7b3a0ba82063.js b/api/search.index/7b3a0ba82063.js
deleted file mode 100644
index fd84f2346..000000000
--- a/api/search.index/7b3a0ba82063.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBFAAAGbhxiWxgFAEcAABZcHV0dZm0cE4MCoDAAABpccHMbAqBwAAAbw2FlCQKhAAAAHUegsAAAHQdhb0sDoEAAABxSoKAAABySY3F0BQBJAAAGRh12whsFAcAAAAYgHQFVHDNxBQHAAAACiRsE6Bxpb0cChIagMAAAHJCgIAAAHFSgcAAAHNegMAAAHJHAiAMjgQKgYAAAG8BjdBceAImgkAAAG8GgAAAACp2g8AAAHTihQAAAHW8ckRYBkQ0AAA==")
\ No newline at end of file
diff --git a/api/search.index/7b97d3df44cf.js b/api/search.index/7b97d3df44cf.js
new file mode 100644
index 000000000..13d35cbd3
--- /dev/null
+++ b/api/search.index/7b97d3df44cf.js
@@ -0,0 +1 @@
+rn_("IUUAAOsbphynHAUASgAAFHYddx1tVR0VAEYAABQYHRkdbe8cch2zAISg0AAAHVAggBI7MAAAAQAAhQADAC8NAADpDoMA+RoAAA==")
\ No newline at end of file
diff --git a/api/search.index/7c253028c5cc.js b/api/search.index/7c253028c5cc.js
deleted file mode 100644
index f1e2342de..000000000
--- a/api/search.index/7c253028c5cc.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUoAAIcciByJHIocFQBFAAARqxvxHGkYGmAcGwKwkBy5AAFlaQUCRgAAEfQbch0GlB0IoB1pc3SLGhUAQQAAFGgcaRxtSBtJGxMEAqAgAAAbqmly9yoZAAABAEIBAQAsATIAMgH7AmNuMUUAABQaFRoWGhcaBQHDAAAzRBtFG0YbRxsFGRtwc/vFAAiAGQUAQQAANPccjR2OHakdbHgd+wJjdA==")
\ No newline at end of file
diff --git a/api/search.index/7c269b7d1d4d.js b/api/search.index/7c269b7d1d4d.js
deleted file mode 100644
index bb7b7abd8..000000000
--- a/api/search.index/7c269b7d1d4d.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("MUEAAKEOEhjIHB8dIUIAAPYX9xf4FxUARQAABUQdY+Yc5xwFAEkAAAaCHWIRHVOFA6AAAAAZdWZzd/OCAmRpY4EDoIAAAB01aGl0")
\ No newline at end of file
diff --git a/api/search.index/7c38757a447e.js b/api/search.index/7c38757a447e.js
new file mode 100644
index 000000000..aab949bf6
--- /dev/null
+++ b/api/search.index/7c38757a447e.js
@@ -0,0 +1 @@
+rn_("FQBFAAAIIB1jDBuaHQUBwAAAAxsZBM8cYW/zAAJ0dfc5EQAAhwEBAAEAvwYBAIgBVQBAAAAFMhtlCBcJFxkZGhkvGzAbGwKwYBszAAFmdBsCoGAAABp0ZW8BAQOgQAAAHSSwQBuWAAGgAAAAGC9mbXM7MAAAAQAAFAAGAK0XDgA+GwAAzhsAAPobAAB4HQAAqx0BAAcNA4mgQAAAHGCgMAAAGWWgQAAAHQagUAAAGwugIAAAFweggAAAHaYnCQc6MAAAAQAAAAAADQAQAAAAlQ7hDuIO4w7kDuUO7RbuFuoXkBplHBAdcR2eHSsCoBAAAArxcHM=")
\ No newline at end of file
diff --git a/api/search.index/7c560543cd9e.js b/api/search.index/7c560543cd9e.js
new file mode 100644
index 000000000..a67f077d3
--- /dev/null
+++ b/api/search.index/7c560543cd9e.js
@@ -0,0 +1 @@
+rn_("FQBFAAAIIB1jDBuaHQUBwAAAAxsZBM8cYW/zAAJ0dfc5EQAAhwEBAAEAvwYBAIgBVQBAAAAFMhtlCBcJFxkZGhkvGzAbGwKwYBszAAFmdBsCoGAAABp0ZW8BAQOgQAAAHSSwQBuWAAGgAAAAGC9mbXM7MAAAAQAAFAAGAK0XDgA+GwAAzhsAAPobAAB4HQAAqx0BAAcNAYmgQAAAHGCgMAAAGWWgQAAAHQagUAAAGwugIAAAFweggAAAHaYnCQc6MAAAAQAAAAAADQAQAAAAlQ7hDuIO4w7kDuUO7RbuFuoXkBplHBAdcR2eHSFDAABBHUIdbB1RQwAAzhOGF4cXiBeJF4oXNwEAhqAQAAAK3LAgDSMD8KAgAAATzBlQAjswAAABAAAOAAIARgQAACcGDQA=")
\ No newline at end of file
diff --git a/api/search.index/7d587ccba2db.js b/api/search.index/7d587ccba2db.js
new file mode 100644
index 000000000..6e7b7aca1
--- /dev/null
+++ b/api/search.index/7d587ccba2db.js
@@ -0,0 +1 @@
+rn_("FQBDAAAUzhwlHXXZF3sZFQBDAAAEQRtmgB2BHRUARgAABIscZpAdkR1TgQOgAAAADVRvc3TzAAJnb/SMDgAApgPGBAwB")
\ No newline at end of file
diff --git a/api/search.index/7d6e18c2c1db.js b/api/search.index/7d6e18c2c1db.js
deleted file mode 100644
index 22c9037b0..000000000
--- a/api/search.index/7d6e18c2c1db.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQBDAAAGtR1knB3zAAFzOjAAAAEAAAAAABUAEAAAAI8NkA0YGRkZcRx8HKMcpBylHKYcpxyoHKkcqhywHLQctRz0HCIdXB1dHX4dRQBBAAAU+Bz5HG3DGMQYxRjCHMMcBQBFAAAEuxxlcBobAqAgAAAbCHV5MwKEsCAX3gABoEAAABsJAgEDOjAAAAEAAAAAAAsAEAAAADcR3BbdFscXyBcdGawbyhvjG+Qb8hxfHfFGAAAYGRkZcRyjHKQcpRymHKccqBypHKocsBy0HLUcIh1+HQUASAAAAGEcczEbKwKwQBh1AAFvcjMCA6BgAAAdB2NmbzowAAABAAAAAAAHABAAAAApDSoNpA1fGAUZDBkNGf0cswAEoBAAABuAYWR2eTowAAABAAAAAAAXABAAAAB6DokO0xfUF2wYXRoeGx8bIxspG3wbxhvHG9sbdBzsHO0cDx0QHRUdGR0aHVMdVB0=")
\ No newline at end of file
diff --git a/api/search.index/7da64647d8b8.js b/api/search.index/7da64647d8b8.js
new file mode 100644
index 000000000..af9c40e90
--- /dev/null
+++ b/api/search.index/7da64647d8b8.js
@@ -0,0 +1 @@
+rn_("BQBHAAAYhh2HHXdkHBUARAAABAsdZZ0bnhsFAcYAAAeKHQVvHWZ0+wJhZlMBA4AT1wAT+GRydDswAAABAABxAQYANhECAF0SYQD0FgEAHhdaAJYaVwD/G1cA")
\ No newline at end of file
diff --git a/api/search.index/7db5e8cfcaf5.js b/api/search.index/7db5e8cfcaf5.js
deleted file mode 100644
index 40e10f90c..000000000
--- a/api/search.index/7db5e8cfcaf5.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("BQLAAAASQBpBGgJVGgcDGWFvciFDAAA/GpocOR0FAcAAABIXGQEdGQodmB1pbwUBxgAACfocCfscY3YFAcAAAAQaEQ1rHG9yZwsAi6DQAAAb3LBwGlgAkqBQAAAW8qCgAAAaWqBAAAARGaCgAAAaWz2hDjowAAABAAAAAAAWABAAAABkAWUBZgHkA94WchhzGF8ZaRpqGmsbcxt2HHccmxzdHN4c7hwjHSUdLx0wHWgd")
\ No newline at end of file
diff --git a/api/search.index/7ded088f603f.js b/api/search.index/7ded088f603f.js
new file mode 100644
index 000000000..01848d3e0
--- /dev/null
+++ b/api/search.index/7ded088f603f.js
@@ -0,0 +1 @@
+rn_("BQHAAAAXQR1CHQp7HXB0QwIDsJAdlQABoHAAAB1saXBzAccXAABRQAAAtAq1CuYW5xadGMkbdQBAAAA2JRuzHB4diB1iyxOBF4IXBhmSGpMaMRsXHfMEAXIBGxEAAAUBwAAABG8dAh4Sb3kFAcAAAAMeGwQtHWFvYUYAALcbuBu5G7obuxu8G70bFQBEAAAGvh1kfx2tHfMCAmJpAVgdAAAhQwAAPRv7G5McBQFFAAAJ3BwVixuMG2Rz1hf7AmFvlwEAhqDAAAAclaBwAAAdQKBAAAAWrjQBRPTKFgAAWwMzAWwABQBDAAARcxl0GWWIDhUAQQAABMocZpsdnB21AEIAAATqHGYaEhsSHBIdEjEZMhlKG0sbTBtNG58doB37AmFvJQBDAAAYJBsVHWdUGsAbwRshRwAA1BfVF7QYIUUAAFwasxu0G2UAQQAABl4YYtgK2QqMDY0Njg2PDZANZQBDAAAGqh1kfhd/F4A [...]
\ No newline at end of file
diff --git a/api/search.index/7f58fda092ce.js b/api/search.index/7f58fda092ce.js
new file mode 100644
index 000000000..69ccaf2fb
--- /dev/null
+++ b/api/search.index/7f58fda092ce.js
@@ -0,0 +1 @@
+rn_("BQFAAAAGJh0BWxwzccscBQHAAAACjxsUWRjuHGlvBQHBAAAM2RwDKxltboFGAAADGQQZJxs1G40bmRvcG3Yc4Rw3RACMsHAdMAANoDAAAByWoCAAABxasBAaTwMloEAAABiWNmpKjV13oDAAAByXoIAAAB0a1qkTOjAAAAEAAAAAABcAEAAAABgNGQ1KDUsNTA1NDU4NTw1QDVENUg1TDc0T2RP3FvsWABcTGGIYYxiDGR4aHxoJG3UARQAABScdcmYaXhtfG2AbYRtiG2Mb2Rs7A6AQAAAT1GNncg==")
\ No newline at end of file
diff --git a/api/search.index/7fbf1d279d65.js b/api/search.index/7fbf1d279d65.js
deleted file mode 100644
index 112780d53..000000000
--- a/api/search.index/7fbf1d279d65.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUgAAGkaahprGwUBxgAAEiobKxsgfBl9GQUbcnMhRQAAaRhqGFoZ+wNjbnRRSAAAZRpmGmcaaBppG2obBQHIAAAjdhx3HO4cKC8dMB1oHXB0+wJhciFMAADhG+IbyhyvAoagAAAADZ+gMAAAF6WgIAAAFtg4gAMhQgAA1w7YDtkO+wJhZQ==")
\ No newline at end of file
diff --git a/api/search.index/7fcd52f98916.js b/api/search.index/7fcd52f98916.js
deleted file mode 100644
index b884bc3cf..000000000
--- a/api/search.index/7fcd52f98916.js
+++ /dev/null
@@ -1 +0,0 @@
-rn_("IUMAADgb9RuNHAUBwwAACpsdDasdZXQjBAKgYAAAHNticAF+GQAABQFDAAAJ1hwVhRuGG2Rz0hcjAAKgYAAAGnRidPI4EQAAJAn7Am50WwOgUAAAHUJhZW8=")
\ No newline at end of file
diff --git a/api/search.index/7fff01096a57.js b/api/search.index/7fff01096a57.js
new file mode 100644
index 000000000..34521519f
--- /dev/null
+++ b/api/search.index/7fff01096a57.js
@@ -0,0 +1 @@
+rn_("FQBEAAAECx1lnRueGwUBxgAAB4odBW8dZnT7AmFmEwECgBPXABP4ZHI7MAAAAQAAcQEGADYRAgBdEmEA9BYBAB4XWgCWGlcA/xtXAA==")
\ No newline at end of file
diff --git a/api/search.index/desc/21b33ae8ab82.js b/api/search.index/desc/21b33ae8ab82.js
deleted file mode 100644
index 912003d85..000000000
--- a/api/search.index/desc/21b33ae8ab82.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("BkThe catalog type that this builder creates.AkThe associated writer type.B`The associated file writer type.AlReturn type of this visitor.0BkReturn type of this visitor on arrow field.BlReturn type of this visitor on arrow schema.BaLocal filesystem storage factory.CgMatch fields by their ID stored in Arrow field metadataAjContains the success value0CoOr predicate, for example, <code>a > 10 OR b < 20</code>.EnAn expression combined by <code>OR</code>, for example, <code>a > [...]
\ No newline at end of file
diff --git a/api/search.index/desc/d3bf0b31ceff.js b/api/search.index/desc/d3bf0b31ceff.js
new file mode 100644
index 000000000..bb64ed5fb
--- /dev/null
+++ b/api/search.index/desc/d3bf0b31ceff.js
@@ -0,0 +1 @@
+rd_("BkThe catalog type that this builder creates.AkThe associated writer type.B`The associated file writer type.AlReturn type of this visitor.0BkReturn type of this visitor on arrow field.BlReturn type of this visitor on arrow schema.BaLocal filesystem storage factory.CgMatch fields by their ID stored in Arrow field metadataAjContains the success value0CoOr predicate, for example, <code>a > 10 OR b < 20</code>.EnAn expression combined by <code>OR</code>, for example, <code>a > [...]
\ No newline at end of file
diff --git a/api/search.index/entry/26bb42d289fd.js b/api/search.index/entry/26bb42d289fd.js
new file mode 100644
index 000000000..e567c1ff5
--- /dev/null
+++ b/api/search.index/entry/26bb42d289fd.js
@@ -0,0 +1 @@
+rd_("Al[3475,17,3476,3403,6405,0,0]Al[3475,17,3335,3335,7285,0,0]Al[3475,17,6018,6018,6950,0,0]Al[3475,17,2048,3709,6258,0,0]Al[3475,17,2048,3709,7456,0,0]Al[3475,17,2323,3300,7043,0,0]0Al[3475,15,1338,1338,6959,0,0]Al[7437,15,7438,7438,7356,0,0]Al[3475,15,2323,2743,6408,0,0]2Al[3475,15,3476,2705,2797,0,0]Al[7320,15,2704,2704,2798,0,0]Al[3475,15,1338,4681,4398,0,0]Al[3475,15,1338,4681,6402,0,0]5Al[7437,15,7438,7438,6419,0,0]Al[3475,15,2048,6508,6240,0,0]Al[3475,15,2048,6392,6970,0,0]11Ao [...]
\ No newline at end of file
diff --git a/api/search.index/entry/59aebcc39170.js b/api/search.index/entry/59aebcc39170.js
deleted file mode 100644
index f9f9751e6..000000000
--- a/api/search.index/entry/59aebcc39170.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("Al[3473,17,3474,3401,6400,0,0]Al[3473,17,3333,3333,7279,0,0]Al[3473,17,6014,6014,6945,0,0]Al[3473,17,2048,3707,6253,0,0]Al[3473,17,2048,3707,7450,0,0]Al[3473,17,2321,3298,7037,0,0]0Al[3473,15,1338,1338,6954,0,0]Al[7431,15,7432,7432,7350,0,0]Al[3473,15,2321,2741,6403,0,0]2Al[3473,15,3474,2703,2795,0,0]Al[7314,15,2702,2702,2796,0,0]Al[3473,15,1338,4677,4394,0,0]Al[3473,15,1338,4677,6397,0,0]5Al[7431,15,7432,7432,6414,0,0]Al[3473,15,2048,6503,6235,0,0]Al[3473,15,2048,6387,6965,0,0]11Ao [...]
\ No newline at end of file
diff --git a/api/search.index/function/23a1794a779e.js b/api/search.index/function/23a1794a779e.js
new file mode 100644
index 000000000..9654c9f3c
--- /dev/null
+++ b/api/search.index/function/23a1794a779e.js
@@ -0,0 +1 @@
+rd_("Bf[\"{{{BDJb{BBCf}}{BDJb{BBCf}}}HMb}\",[]]Bf[\"{{{BDJb{CDLn}}{BDJb{CDLn}}}HMb}\",[]]Bf[\"{{{BDJb{CBB`}}{BDJb{CBB`}}}HMb}\",[]]Bf[\"{{{BDJb{BBDj}}{BDJb{BBDj}}}HMb}\",[]]Bf[\"{{{BDJb{BGKl}}{BDJb{BGKl}}}HMb}\",[]]Bf[\"{{{BDJb{CDOb}}{BDJb{CDOb}}}HMb}\",[]]Bf[\"{{{BDJb{BNAn}}{BDJb{BNAn}}}HMb}\",[]]Bf[\"{{{BDJb{BGLb}}{BDJb{BGLb}}}HMb}\",[]]Bf[\"{{{BDJb{BBFb}}{BDJb{BBFb}}}HMb}\",[]]Bf[\"{{{BDJb{CB@f}}{BDJb{CB@f}}}HMb}\",[]]Cg[\"{{{BDJb{{CFEd{c}}}}{BDJb{{CFEd{c}}}}}HMbBBEd}\",[\"T\"]]Cg[\"{ [...]
\ No newline at end of file
diff --git a/api/search.index/function/f821c045a6fc.js b/api/search.index/function/f821c045a6fc.js
deleted file mode 100644
index 952aa56d8..000000000
--- a/api/search.index/function/f821c045a6fc.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("Bf[\"{{{BDIj{BBBn}}{BDIj{BBBn}}}HMb}\",[]]Bf[\"{{{BDIj{CDLd}}{BDIj{CDLd}}}HMb}\",[]]Bf[\"{{{BDIj{CBAf}}{BDIj{CBAf}}}HMb}\",[]]Bf[\"{{{BDIj{BBDb}}{BDIj{BBDb}}}HMb}\",[]]Bf[\"{{{BDIj{BGKd}}{BDIj{BGKd}}}HMb}\",[]]Bf[\"{{{BDIj{CDNh}}{BDIj{CDNh}}}HMb}\",[]]Bf[\"{{{BDIj{BNAf}}{BDIj{BNAf}}}HMb}\",[]]Bf[\"{{{BDIj{BGKj}}{BDIj{BGKj}}}HMb}\",[]]Bf[\"{{{BDIj{BBEj}}{BDIj{BBEj}}}HMb}\",[]]Bf[\"{{{BDIj{CAOl}}{BDIj{CAOl}}}HMb}\",[]]Cg[\"{{{BDIj{{CFDj{c}}}}{BDIj{{CFDj{c}}}}}HMbBBDl}\",[\"T\"]]Cg[\"{ [...]
\ No newline at end of file
diff --git a/api/search.index/generic_inverted_index/20992865d47c.js b/api/search.index/generic_inverted_index/20992865d47c.js
new file mode 100644
index 000000000..be5b4c247
--- /dev/null
+++ b/api/search.index/generic_inverted_index/20992865d47c.js
@@ -0,0 +1 @@
+rb_("REFgADswAAABAACXAQQA/wbIABUIyAArEgAAhhcEADswAAABAAAZAhUAMAQAAEIFAABKBSgAdQUCAHsFAAB9BQcAhwUPAJgFAACaBQ8ArAUFALMFBwC8BQEAwAUHAMkFMQD8BQQAAgYYABwGAAAeBggA6Q6DAEEQyAAoEgIAOzAAAAEAACcDFABIAsgAwgkDAMcJJQDuCZ4A0QspAPwLngAADQEAbQ8gAI8PAACSDwAAlA8TAKkPAwCuDwMAsw8LAMAPFwDZDxAA6w9CAC8QEQBkHAAADx0AADswAAABAADfARUAhwACAOoDAQD4AwAA+gMAAA4EAABpBAEA2QcBAMYJAACYCgEAsAwBAEANAABVDQQAsg8AAAsRAABPESkAehGeAAcWowAeFwYAKRdPABIdAABDHQEAOzAAAAEAANYBJAD0AwAA+wMAADUEAAA8BAAAcwUAAOgHAAAFCAIAKQkAAJYKAQCaCgEAzws [...]
\ No newline at end of file
diff --git a/api/search.index/generic_inverted_index/b19d1e8e1b34.js b/api/search.index/generic_inverted_index/b19d1e8e1b34.js
deleted file mode 100644
index 5941ed073..000000000
--- a/api/search.index/generic_inverted_index/b19d1e8e1b34.js
+++ /dev/null
@@ -1 +0,0 @@
-rb_("REBsADswAAABAACXAQQA/wbIABMIyAAnEgAAghcEADswAAABAAAZAhUAMAQAAEgFAABKBSgAdQUCAHoFAAB9BQgAiAUPAJoFEACtBQMAsgUJAL0FAAC/BQAAwQUGAMkFMQD8BQQAAgYYABwGAAAeBggA5Q6DAD0QyAAkEgIAOzAAAAEAACcDFABIAsgAwAkEAMYJIwDrCZ8AzwspAPoLngD+DAEAaQ8gAIwPAACODwAAkA8UAKYPAgCqDwMArw8LALwPFwDVDxEA6A9BACsQEQBeHAAACR0AADswAAABAADfARUAhwACAOoDAQD4AwAA+gMAAA4EAABpBAEA2QcBAMUJAACWCgEArgwBAD4NAABTDQQArg8AAAcRAABLESkAdhGeAAMWowAaFwYAJRdPAAwdAAA9HQEAOzAAAAEAANYBJAD0AwAA+wMAADUEAAA8BAAAcwUAAOgHAAAFCAIAJwkAAJQKAQCYCgEAzQs [...]
\ No newline at end of file
diff --git a/api/search.index/name/0291a4fab18f.js b/api/search.index/name/0291a4fab18f.js
deleted file mode 100644
index cdca3fabf..000000000
--- a/api/search.index/name/0291a4fab18f.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("aC0aR00aT000aU0b()bAsbEqbFsbIdbInbOk0bOr00bS3000bV10bV2bV3b[]beq0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bidbio0bop00bor000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bs30btobu8bv1bv2bv3cAnd00cAnycArccBoxcDaycErr0cGcs00cInt0cLz4cMap00cNot00cOrccOrdcOss00cPincSet0cSqlcTag0cU [...]
\ No newline at end of file
diff --git a/api/search.index/name/f111d7696b6e.js b/api/search.index/name/f111d7696b6e.js
new file mode 100644
index 000000000..991aa355b
--- /dev/null
+++ b/api/search.index/name/f111d7696b6e.js
@@ -0,0 +1 @@
+rd_("aC0aR00aT000aU0b()bAsbEqbFsbIdbInbOk0bOr00bS3000bV10bV2bV3b[]beq0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bidbio0bop00bor000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bs30btobu8bv1bv2bv3cAnd00cAnycArccBoxcDaycErr0cGcs00cInt0cLz4cMap00cNot00cOrccOrdcOss00cPincSet0cSqlcTag0cU [...]
\ No newline at end of file
diff --git a/api/search.index/normalizedName/71d2487b7e36.js b/api/search.index/normalizedName/71d2487b7e36.js
new file mode 100644
index 000000000..1980cf41b
--- /dev/null
+++ b/api/search.index/normalizedName/71d2487b7e36.js
@@ -0,0 +1 @@
+rd_("ac0ar00at000au0b()basbeqbfsbidbinbok0bor00bs3000bv10bv2bv3b[]:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::8bio0bop00777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766btobu8765cand00canycarccboxcdaycerr0cgcs00cint0clz4cmap00cnot00corccordcoss00cpincset0csqlctag0cutccveccaddcand [...]
\ No newline at end of file
diff --git a/api/search.index/normalizedName/fd7ad551e658.js b/api/search.index/normalizedName/fd7ad551e658.js
deleted file mode 100644
index 2453160bb..000000000
--- a/api/search.index/normalizedName/fd7ad551e658.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("ac0ar00at000au0b()basbeqbfsbidbinbok0bor00bs3000bv10bv2bv3b[]:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::8bio0bop00777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777766btobu8765cand00canycarccboxcdaycerr0cgcs00cint0clz4cmap00cnot00corccordcoss00cpincset0csqlctag0cutccveccaddcand [...]
\ No newline at end of file
diff --git a/api/search.index/path/237d52cb6093.js b/api/search.index/path/237d52cb6093.js
new file mode 100644
index 000000000..5af865c58
--- /dev/null
+++ b/api/search.index/path/237d52cb6093.js
@@ -0,0 +1 @@
+rd_("g[17,\"\"]000f[1,\"\"]Aa[10,\"bnum::cast\"]Eg[5,\"tower_http::follow_redirect::policy::or\",\"tower_http::follow_redirect::policy::or\"]Bn[15,\"iceberg_storage_opendal::OpenDalStorage\"]Ce[15,\"iceberg_storage_opendal::OpenDalStorageFactory\"]4m[2,\"iceberg\"]Bb[2,\"iceberg::io::storage::config\"]Am[2,\"iceberg_storage_opendal\"]7Ei[5,\"tower_http::follow_redirect::policy::and\",\"tower_http::follow_redirect::policy::and\"]A`[10,\"core::any\"]Ao[5,\"alloc::sync\",\"alloc::sync\"]Ba[ [...]
\ No newline at end of file
diff --git a/api/search.index/path/323a1de78083.js b/api/search.index/path/323a1de78083.js
deleted file mode 100644
index 169fc38ef..000000000
--- a/api/search.index/path/323a1de78083.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("g[17,\"\"]000f[1,\"\"]Aa[10,\"bnum::cast\"]Eg[5,\"tower_http::follow_redirect::policy::or\",\"tower_http::follow_redirect::policy::or\"]Bn[15,\"iceberg_storage_opendal::OpenDalStorage\"]Ce[15,\"iceberg_storage_opendal::OpenDalStorageFactory\"]4m[2,\"iceberg\"]Bb[2,\"iceberg::io::storage::config\"]Am[2,\"iceberg_storage_opendal\"]7Ei[5,\"tower_http::follow_redirect::policy::and\",\"tower_http::follow_redirect::policy::and\"]A`[10,\"core::any\"]Ao[5,\"alloc::sync\",\"alloc::sync\"]Ba[ [...]
\ No newline at end of file
diff --git a/api/search.index/root.js b/api/search.index/root.js
index 810c014e3..a3ab53885 100644
--- a/api/search.index/root.js
+++ b/api/search.index/root.js
@@ -1 +1 @@
-rr_('{"normalizedName":{"I":"RQBAAAAEPBFlVwE1BtsKEA0wDRUAQAAAIBgD6QM7BDQ5BBINFQBAAAAAEg020hOuHTFAAABpARgD6QM7BAUBwAAAAo8YBX8aYWUxQAAANQbbChANMA1jAASgEAAADRKwcByLAHc1OGRt9hwAAAA9Ab4B0QBSANcIVQJAAAAxNQbbChANMA0AOQQBEQ0yNjkaABsAWAGbDoAbbR0FAcAAAANxGwB9GGFzAQEBoGAAABgAZDswAAABAADKAAMARQQAAFoEAAATCMgABQHDAAAXPR0+HRKeHJ8cZHNFAEIAAAXuFmPgCOEI4gjjCBIJBABCdGQAAAZlZmF1bHRRGGRdBFYLAMHIoAAAAAFpUwwQgtExoFAAABvPsCAOlAnqAAAAAQhOHAAA8g0XAACtAAUAUgAABrgdZKcdBQBUAAAGuR1kqh3zgwJwdDUARAAAFrAdsR1kHB0dHZIdkx1 [...]
\ No newline at end of file
+rr_('{"normalizedName":{"I":"RQBAAAAEQBFlVwE1Bt0KEg0yDRUAQAAAIBgD6QM7BDQ5BBQNFQBAAAAAFA021hO0HTFAAABpARgD6QM7BAUBwAAAApQYBYQaYWUxQAAANQbdChINMg1jAASgEAAADRSwcByRAHc1OGRt9hwAAAA9Ab4B0QBSANkIVQJAAAAxNQbdChINMg0AOQQBEw0yNjkaABsAWAGdDoYbcx0FAcAAAAN3GwCCGGFzAQEBoGAAABgFZDswAAABAADKAAMARQQAAFoEAAAVCMgABQHDAAAXQx1EHRKkHKUcZHNFAEIAAAXyFmPiCOMI5AjlCBQJBABCdGQAAAZlZmF1bHRWGGRdBFYLAMHIoAAAAAFpE7/LOC4woFAAABvVsCAOlgntAAAAAQhOHAAA8hEXAACtAAUAUgAABr4dZK0dBQBUAAAGvx1ksB3zgwJwdDUARAAAFrYdtx1kIh0jHZgdmR1 [...]
\ No newline at end of file
diff --git a/api/search.index/type/62890570de18.js b/api/search.index/type/62890570de18.js
new file mode 100644
index 000000000..ca7422ede
--- /dev/null
+++ b/api/search.index/type/62890570de18.js
@@ -0,0 +1 @@
+rd_("Co[\"AAAAAAAAAAAAAakcAAAAAAAAAAABzwcAAA==\",\"AAAAAAAAAAAAAakcAAA=\"]Bg[\"AAAAAAAAAAAAAAAAASUJAAABKAkAAA==\",\"\"]No[\"AAAAAAAAAAAAOjAAAAEAAAAAABAAEAAAAEwSihiLGCQZJRmMGY0Zfhp/GqQbpRuqG6sb8BvxG/Yb9xsDzAcAAJQKAADmDAAAOzAAAAEAACMADQDwAwAAAg0AAE0SAQAWFwEA7BcBAIwYAwAmGQMAjhkDAIAaAwCmGwMArBsBAPIbAwD4GwEABM0HAADOBwAAlQoAAOcMAAAF8QMAAPIDAADxDAAAAw0AAAQNAAA=\",\"\"]Gc[\"AAAAAAAAAAAAAAA6MAAAAQAAAAAAEAAQAAAAThIWFxcX7BftF44YjxgoGSkZkBmRGYIagxqoG6kb9Bv1GwHOBwAAA/IDAADxDAAABA0AAA==\",\"\"]BAo[\"A [...]
\ No newline at end of file
diff --git a/api/search.index/type/e8f8c712b588.js b/api/search.index/type/e8f8c712b588.js
deleted file mode 100644
index 25df1e82c..000000000
--- a/api/search.index/type/e8f8c712b588.js
+++ /dev/null
@@ -1 +0,0 @@
-rd_("Co[\"AAAAAAAAAAAAAaMcAAAAAAAAAAABzwcAAA==\",\"AAAAAAAAAAAAAaMcAAA=\"]Bg[\"AAAAAAAAAAAAAAAAASMJAAABJgkAAA==\",\"\"]No[\"AAAAAAAAAAAAOjAAAAEAAAAAABAAEAAAAEgShRiGGB8ZIBmHGYgZeRp6Gp4bnxukG6Ub6hvrG/Ab8RsDzAcAAJIKAADkDAAAOzAAAAEAACMADQDwAwAAAA0AAEkSAQASFwEA5xcBAIcYAwAhGQMAiRkDAHsaAwCgGwMAphsBAOwbAwDyGwEABM0HAADOBwAAkwoAAOUMAAAF8QMAAPIDAADvDAAAAQ0AAAINAAA=\",\"\"]Gc[\"AAAAAAAAAAAAAAA6MAAAAQAAAAAAEAAQAAAAShISFxMX5xfoF4kYihgjGSQZixmMGX0afhqiG6Mb7hvvGwHOBwAAA/IDAADvDAAAAg0AAA==\",\"\"]BAo[\"A [...]
\ No newline at end of file
diff --git a/api/src-files.js b/api/src-files.js
index 3a7ce90d2..6ceaa9e02 100644
--- a/api/src-files.js
+++ b/api/src-files.js
@@ -1,2 +1,2 @@
-createSrcSidebar('[["iceberg",["",[["arrow",[],["caching_delete_file_loader.rs","delete_file_loader.rs","delete_filter.rs","mod.rs","nan_val_cnt_visitor.rs","partition_value_calculator.rs","reader.rs","record_batch_partition_splitter.rs","record_batch_projector.rs","record_batch_transformer.rs","schema.rs","value.rs"]],["avro",[],["mod.rs","schema.rs"]],["catalog",[["memory",[],["catalog.rs","mod.rs","namespace_state.rs"]]],["metadata_location.rs","mod.rs","utils.rs"]],["encryption",[],[ [...]
-//{"start":19,"fragment_lengths":[2663,42,91,90,46,80,72,67,313,49,55,109,130,42]}
\ No newline at end of file
+createSrcSidebar('[["iceberg",["",[["arrow",[],["caching_delete_file_loader.rs","delete_file_loader.rs","delete_filter.rs","mod.rs","nan_val_cnt_visitor.rs","partition_value_calculator.rs","reader.rs","record_batch_partition_splitter.rs","record_batch_projector.rs","record_batch_transformer.rs","schema.rs","value.rs"]],["avro",[],["mod.rs","schema.rs"]],["catalog",[["memory",[],["catalog.rs","mod.rs","namespace_state.rs"]]],["metadata_location.rs","mod.rs","utils.rs"]],["encryption",[],[ [...]
+//{"start":19,"fragment_lengths":[2689,42,91,90,46,80,72,67,313,49,55,109,130,42]}
\ No newline at end of file
diff --git a/api/src/iceberg/arrow/reader.rs.html b/api/src/iceberg/arrow/reader.rs.html
index 0c32e3929..019822161 100644
--- a/api/src/iceberg/arrow/reader.rs.html
+++ b/api/src/iceberg/arrow/reader.rs.html
@@ -58,7 +58,7 @@
<a href=#58 id=58 data-nosnippet>58</a><span class="kw">use </span><span class="kw">crate</span>::metadata_columns::{RESERVED_FIELD_ID_FILE, is_metadata_field};
<a href=#59 id=59 data-nosnippet>59</a><span class="kw">use </span><span class="kw">crate</span>::scan::{ArrowRecordBatchStream, FileScanTask, FileScanTaskStream};
<a href=#60 id=60 data-nosnippet>60</a><span class="kw">use </span><span class="kw">crate</span>::spec::{Datum, NameMapping, NestedField, PrimitiveType, Schema, Type};
-<a href=#61 id=61 data-nosnippet>61</a><span class="kw">use </span><span class="kw">crate</span>::utils::available_parallelism;
+<a href=#61 id=61 data-nosnippet>61</a><span class="kw">use </span><span class="kw">crate</span>::util::available_parallelism;
<a href=#62 id=62 data-nosnippet>62</a><span class="kw">use crate</span>::{Error, ErrorKind};
<a href=#63 id=63 data-nosnippet>63</a>
<a href=#64 id=64 data-nosnippet>64</a><span class="doccomment">/// Default gap between byte ranges below which they are coalesced into a
diff --git a/api/src/iceberg/lib.rs.html b/api/src/iceberg/lib.rs.html
index c98ea503c..a8e34ee26 100644
--- a/api/src/iceberg/lib.rs.html
+++ b/api/src/iceberg/lib.rs.html
@@ -95,10 +95,11 @@
<a href=#95 id=95 data-nosnippet>95</a><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">mod </span>delete_file_index;
<a href=#96 id=96 data-nosnippet>96</a><span class="kw">pub mod </span>encryption;
<a href=#97 id=97 data-nosnippet>97</a><span class="kw">pub mod </span>test_utils;
-<a href=#98 id=98 data-nosnippet>98</a><span class="kw">mod </span>utils;
-<a href=#99 id=99 data-nosnippet>99</a><span class="kw">pub mod </span>writer;
-<a href=#100 id=100 data-nosnippet>100</a>
-<a href=#101 id=101 data-nosnippet>101</a><span class="kw">mod </span>delete_vector;
-<a href=#102 id=102 data-nosnippet>102</a><span class="kw">pub mod </span>metadata_columns;
-<a href=#103 id=103 data-nosnippet>103</a><span class="kw">pub mod </span>puffin;
+<a href=#98 id=98 data-nosnippet>98</a><span class="kw">pub mod </span>writer;
+<a href=#99 id=99 data-nosnippet>99</a>
+<a href=#100 id=100 data-nosnippet>100</a><span class="kw">mod </span>delete_vector;
+<a href=#101 id=101 data-nosnippet>101</a><span class="kw">pub mod </span>metadata_columns;
+<a href=#102 id=102 data-nosnippet>102</a><span class="kw">pub mod </span>puffin;
+<a href=#103 id=103 data-nosnippet>103</a><span class="doccomment">/// Utility functions and modules.
+<a href=#104 id=104 data-nosnippet>104</a></span><span class="kw">pub mod </span>util;
</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/src/iceberg/scan/mod.rs.html b/api/src/iceberg/scan/mod.rs.html
index d95fca449..af34f4bee 100644
--- a/api/src/iceberg/scan/mod.rs.html
+++ b/api/src/iceberg/scan/mod.rs.html
@@ -40,7 +40,7 @@
<a href=#40 id=40 data-nosnippet>40</a><span class="kw">use </span><span class="kw">crate</span>::runtime::spawn;
<a href=#41 id=41 data-nosnippet>41</a><span class="kw">use </span><span class="kw">crate</span>::spec::{DataContentType, SnapshotRef};
<a href=#42 id=42 data-nosnippet>42</a><span class="kw">use </span><span class="kw">crate</span>::table::Table;
-<a href=#43 id=43 data-nosnippet>43</a><span class="kw">use </span><span class="kw">crate</span>::utils::available_parallelism;
+<a href=#43 id=43 data-nosnippet>43</a><span class="kw">use </span><span class="kw">crate</span>::util::available_parallelism;
<a href=#44 id=44 data-nosnippet>44</a><span class="kw">use crate</span>::{Error, ErrorKind, <span class="prelude-ty">Result</span>};
<a href=#45 id=45 data-nosnippet>45</a>
<a href=#46 id=46 data-nosnippet>46</a><span class="doccomment">/// A stream of arrow [`RecordBatch`]es.
@@ -683,1268 +683,1268 @@
<a href=#683 id=683 data-nosnippet>683</a> }
<a href=#684 id=684 data-nosnippet>684</a> }
<a href=#685 id=685 data-nosnippet>685</a>
-<a href=#686 id=686 data-nosnippet>686</a> <span class="kw">pub fn </span>new_unpartitioned() -> <span class="self">Self </span>{
-<a href=#687 id=687 data-nosnippet>687</a> <span class="kw">let </span>tmp_dir = TempDir::new().unwrap();
-<a href=#688 id=688 data-nosnippet>688</a> <span class="kw">let </span>table_location = tmp_dir.path().join(<span class="string">"table1"</span>);
-<a href=#689 id=689 data-nosnippet>689</a> <span class="kw">let </span>manifest_list1_location = table_location.join(<span class="string">"metadata/manifests_list_1.avro"</span>);
-<a href=#690 id=690 data-nosnippet>690</a> <span class="kw">let </span>manifest_list2_location = table_location.join(<span class="string">"metadata/manifests_list_2.avro"</span>);
-<a href=#691 id=691 data-nosnippet>691</a> <span class="kw">let </span>table_metadata1_location = table_location.join(<span class="string">"metadata/v1.json"</span>);
-<a href=#692 id=692 data-nosnippet>692</a>
-<a href=#693 id=693 data-nosnippet>693</a> <span class="kw">let </span>file_io = FileIO::new_with_fs();
-<a href=#694 id=694 data-nosnippet>694</a>
-<a href=#695 id=695 data-nosnippet>695</a> <span class="kw">let </span><span class="kw-2">mut </span>table_metadata = {
-<a href=#696 id=696 data-nosnippet>696</a> <span class="kw">let </span>template_json_str = fs::read_to_string(<span class="macro">format!</span>(
-<a href=#697 id=697 data-nosnippet>697</a> <span class="string">"{}/testdata/example_table_metadata_v2.json"</span>,
-<a href=#698 id=698 data-nosnippet>698</a> <span class="macro">env!</span>(<span class="string">"CARGO_MANIFEST_DIR"</span>)
-<a href=#699 id=699 data-nosnippet>699</a> ))
-<a href=#700 id=700 data-nosnippet>700</a> .unwrap();
-<a href=#701 id=701 data-nosnippet>701</a> <span class="kw">let </span>metadata_json = render_template(<span class="kw-2">&</span>template_json_str, <span class="macro">context!</span> {
-<a href=#702 id=702 data-nosnippet>702</a> table_location => <span class="kw-2">&</span>table_location,
-<a href=#703 id=703 data-nosnippet>703</a> manifest_list_1_location => <span class="kw-2">&</span>manifest_list1_location,
-<a href=#704 id=704 data-nosnippet>704</a> manifest_list_2_location => <span class="kw-2">&</span>manifest_list2_location,
-<a href=#705 id=705 data-nosnippet>705</a> table_metadata_1_location => <span class="kw-2">&</span>table_metadata1_location,
-<a href=#706 id=706 data-nosnippet>706</a> });
-<a href=#707 id=707 data-nosnippet>707</a> serde_json::from_str::<TableMetadata>(<span class="kw-2">&</span>metadata_json).unwrap()
-<a href=#708 id=708 data-nosnippet>708</a> };
-<a href=#709 id=709 data-nosnippet>709</a>
-<a href=#710 id=710 data-nosnippet>710</a> table_metadata.default_spec = Arc::new(PartitionSpec::unpartition_spec());
-<a href=#711 id=711 data-nosnippet>711</a> table_metadata.partition_specs.clear();
-<a href=#712 id=712 data-nosnippet>712</a> table_metadata.default_partition_type = StructType::new(<span class="macro">vec!</span>[]);
-<a href=#713 id=713 data-nosnippet>713</a> table_metadata
-<a href=#714 id=714 data-nosnippet>714</a> .partition_specs
-<a href=#715 id=715 data-nosnippet>715</a> .insert(<span class="number">0</span>, table_metadata.default_spec.clone());
-<a href=#716 id=716 data-nosnippet>716</a>
-<a href=#717 id=717 data-nosnippet>717</a> <span class="kw">let </span>table = Table::builder()
-<a href=#718 id=718 data-nosnippet>718</a> .metadata(table_metadata)
-<a href=#719 id=719 data-nosnippet>719</a> .identifier(TableIdent::from_strs([<span class="string">"db"</span>, <span class="string">"table1"</span>]).unwrap())
-<a href=#720 id=720 data-nosnippet>720</a> .file_io(file_io.clone())
-<a href=#721 id=721 data-nosnippet>721</a> .metadata_location(table_metadata1_location.to_str().unwrap())
-<a href=#722 id=722 data-nosnippet>722</a> .build()
-<a href=#723 id=723 data-nosnippet>723</a> .unwrap();
-<a href=#724 id=724 data-nosnippet>724</a>
-<a href=#725 id=725 data-nosnippet>725</a> <span class="self">Self </span>{
-<a href=#726 id=726 data-nosnippet>726</a> table_location: table_location.to_str().unwrap().to_string(),
-<a href=#727 id=727 data-nosnippet>727</a> table,
-<a href=#728 id=728 data-nosnippet>728</a> }
-<a href=#729 id=729 data-nosnippet>729</a> }
-<a href=#730 id=730 data-nosnippet>730</a>
-<a href=#731 id=731 data-nosnippet>731</a> <span class="kw">fn </span>next_manifest_file(<span class="kw-2">&</span><span class="self">self</span>) -> OutputFile {
-<a href=#732 id=732 data-nosnippet>732</a> <span class="self">self</span>.table
-<a href=#733 id=733 data-nosnippet>733</a> .file_io()
-<a href=#734 id=734 data-nosnippet>734</a> .new_output(<span class="macro">format!</span>(
-<a href=#735 id=735 data-nosnippet>735</a> <span class="string">"{}/metadata/manifest_{}.avro"</span>,
-<a href=#736 id=736 data-nosnippet>736</a> <span class="self">self</span>.table_location,
-<a href=#737 id=737 data-nosnippet>737</a> Uuid::new_v4()
-<a href=#738 id=738 data-nosnippet>738</a> ))
-<a href=#739 id=739 data-nosnippet>739</a> .unwrap()
-<a href=#740 id=740 data-nosnippet>740</a> }
-<a href=#741 id=741 data-nosnippet>741</a>
-<a href=#742 id=742 data-nosnippet>742</a> <span class="kw">pub async fn </span>setup_manifest_files(<span class="kw-2">&mut </span><span class="self">self</span>) {
-<a href=#743 id=743 data-nosnippet>743</a> <span class="kw">let </span>current_snapshot = <span class="self">self</span>.table.metadata().current_snapshot().unwrap();
-<a href=#744 id=744 data-nosnippet>744</a> <span class="kw">let </span>parent_snapshot = current_snapshot
-<a href=#745 id=745 data-nosnippet>745</a> .parent_snapshot(<span class="self">self</span>.table.metadata())
-<a href=#746 id=746 data-nosnippet>746</a> .unwrap();
-<a href=#747 id=747 data-nosnippet>747</a> <span class="kw">let </span>current_schema = current_snapshot.schema(<span class="self">self</span>.table.metadata()).unwrap();
-<a href=#748 id=748 data-nosnippet>748</a> <span class="kw">let </span>current_partition_spec = <span class="self">self</span>.table.metadata().default_partition_spec();
+<a href=#686 id=686 data-nosnippet>686</a> <span class="doccomment">/// Creates a fixture with 5 snapshots chained as:
+<a href=#687 id=687 data-nosnippet>687</a> /// S1 (root) -> S2 -> S3 -> S4 -> S5 (current)
+<a href=#688 id=688 data-nosnippet>688</a> /// Useful for testing snapshot history traversal.
+<a href=#689 id=689 data-nosnippet>689</a> </span><span class="kw">pub fn </span>new_with_deep_history() -> <span class="self">Self </span>{
+<a href=#690 id=690 data-nosnippet>690</a> <span class="kw">let </span>tmp_dir = TempDir::new().unwrap();
+<a href=#691 id=691 data-nosnippet>691</a> <span class="kw">let </span>table_location = tmp_dir.path().join(<span class="string">"table1"</span>);
+<a href=#692 id=692 data-nosnippet>692</a> <span class="kw">let </span>table_metadata1_location = table_location.join(<span class="string">"metadata/v1.json"</span>);
+<a href=#693 id=693 data-nosnippet>693</a>
+<a href=#694 id=694 data-nosnippet>694</a> <span class="kw">let </span>file_io = FileIO::new_with_fs();
+<a href=#695 id=695 data-nosnippet>695</a>
+<a href=#696 id=696 data-nosnippet>696</a> <span class="kw">let </span>table_metadata = {
+<a href=#697 id=697 data-nosnippet>697</a> <span class="kw">let </span>json_str = fs::read_to_string(<span class="macro">format!</span>(
+<a href=#698 id=698 data-nosnippet>698</a> <span class="string">"{}/testdata/example_table_metadata_v2_deep_history.json"</span>,
+<a href=#699 id=699 data-nosnippet>699</a> <span class="macro">env!</span>(<span class="string">"CARGO_MANIFEST_DIR"</span>)
+<a href=#700 id=700 data-nosnippet>700</a> ))
+<a href=#701 id=701 data-nosnippet>701</a> .unwrap();
+<a href=#702 id=702 data-nosnippet>702</a> serde_json::from_str::<TableMetadata>(<span class="kw-2">&</span>json_str).unwrap()
+<a href=#703 id=703 data-nosnippet>703</a> };
+<a href=#704 id=704 data-nosnippet>704</a>
+<a href=#705 id=705 data-nosnippet>705</a> <span class="kw">let </span>table = Table::builder()
+<a href=#706 id=706 data-nosnippet>706</a> .metadata(table_metadata)
+<a href=#707 id=707 data-nosnippet>707</a> .identifier(TableIdent::from_strs([<span class="string">"db"</span>, <span class="string">"table1"</span>]).unwrap())
+<a href=#708 id=708 data-nosnippet>708</a> .file_io(file_io.clone())
+<a href=#709 id=709 data-nosnippet>709</a> .metadata_location(table_metadata1_location.as_os_str().to_str().unwrap())
+<a href=#710 id=710 data-nosnippet>710</a> .build()
+<a href=#711 id=711 data-nosnippet>711</a> .unwrap();
+<a href=#712 id=712 data-nosnippet>712</a>
+<a href=#713 id=713 data-nosnippet>713</a> <span class="self">Self </span>{
+<a href=#714 id=714 data-nosnippet>714</a> table_location: table_location.to_str().unwrap().to_string(),
+<a href=#715 id=715 data-nosnippet>715</a> table,
+<a href=#716 id=716 data-nosnippet>716</a> }
+<a href=#717 id=717 data-nosnippet>717</a> }
+<a href=#718 id=718 data-nosnippet>718</a>
+<a href=#719 id=719 data-nosnippet>719</a> <span class="kw">pub fn </span>new_unpartitioned() -> <span class="self">Self </span>{
+<a href=#720 id=720 data-nosnippet>720</a> <span class="kw">let </span>tmp_dir = TempDir::new().unwrap();
+<a href=#721 id=721 data-nosnippet>721</a> <span class="kw">let </span>table_location = tmp_dir.path().join(<span class="string">"table1"</span>);
+<a href=#722 id=722 data-nosnippet>722</a> <span class="kw">let </span>manifest_list1_location = table_location.join(<span class="string">"metadata/manifests_list_1.avro"</span>);
+<a href=#723 id=723 data-nosnippet>723</a> <span class="kw">let </span>manifest_list2_location = table_location.join(<span class="string">"metadata/manifests_list_2.avro"</span>);
+<a href=#724 id=724 data-nosnippet>724</a> <span class="kw">let </span>table_metadata1_location = table_location.join(<span class="string">"metadata/v1.json"</span>);
+<a href=#725 id=725 data-nosnippet>725</a>
+<a href=#726 id=726 data-nosnippet>726</a> <span class="kw">let </span>file_io = FileIO::new_with_fs();
+<a href=#727 id=727 data-nosnippet>727</a>
+<a href=#728 id=728 data-nosnippet>728</a> <span class="kw">let </span><span class="kw-2">mut </span>table_metadata = {
+<a href=#729 id=729 data-nosnippet>729</a> <span class="kw">let </span>template_json_str = fs::read_to_string(<span class="macro">format!</span>(
+<a href=#730 id=730 data-nosnippet>730</a> <span class="string">"{}/testdata/example_table_metadata_v2.json"</span>,
+<a href=#731 id=731 data-nosnippet>731</a> <span class="macro">env!</span>(<span class="string">"CARGO_MANIFEST_DIR"</span>)
+<a href=#732 id=732 data-nosnippet>732</a> ))
+<a href=#733 id=733 data-nosnippet>733</a> .unwrap();
+<a href=#734 id=734 data-nosnippet>734</a> <span class="kw">let </span>metadata_json = render_template(<span class="kw-2">&</span>template_json_str, <span class="macro">context!</span> {
+<a href=#735 id=735 data-nosnippet>735</a> table_location => <span class="kw-2">&</span>table_location,
+<a href=#736 id=736 data-nosnippet>736</a> manifest_list_1_location => <span class="kw-2">&</span>manifest_list1_location,
+<a href=#737 id=737 data-nosnippet>737</a> manifest_list_2_location => <span class="kw-2">&</span>manifest_list2_location,
+<a href=#738 id=738 data-nosnippet>738</a> table_metadata_1_location => <span class="kw-2">&</span>table_metadata1_location,
+<a href=#739 id=739 data-nosnippet>739</a> });
+<a href=#740 id=740 data-nosnippet>740</a> serde_json::from_str::<TableMetadata>(<span class="kw-2">&</span>metadata_json).unwrap()
+<a href=#741 id=741 data-nosnippet>741</a> };
+<a href=#742 id=742 data-nosnippet>742</a>
+<a href=#743 id=743 data-nosnippet>743</a> table_metadata.default_spec = Arc::new(PartitionSpec::unpartition_spec());
+<a href=#744 id=744 data-nosnippet>744</a> table_metadata.partition_specs.clear();
+<a href=#745 id=745 data-nosnippet>745</a> table_metadata.default_partition_type = StructType::new(<span class="macro">vec!</span>[]);
+<a href=#746 id=746 data-nosnippet>746</a> table_metadata
+<a href=#747 id=747 data-nosnippet>747</a> .partition_specs
+<a href=#748 id=748 data-nosnippet>748</a> .insert(<span class="number">0</span>, table_metadata.default_spec.clone());
<a href=#749 id=749 data-nosnippet>749</a>
-<a href=#750 id=750 data-nosnippet>750</a> <span class="comment">// Write the data files first, then use the file size in the manifest entries
-<a href=#751 id=751 data-nosnippet>751</a> </span><span class="kw">let </span>parquet_file_size = <span class="self">self</span>.write_parquet_data_files();
-<a href=#752 id=752 data-nosnippet>752</a>
-<a href=#753 id=753 data-nosnippet>753</a> <span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
-<a href=#754 id=754 data-nosnippet>754</a> <span class="self">self</span>.next_manifest_file(),
-<a href=#755 id=755 data-nosnippet>755</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
-<a href=#756 id=756 data-nosnippet>756</a> <span class="prelude-val">None</span>,
-<a href=#757 id=757 data-nosnippet>757</a> current_schema.clone(),
-<a href=#758 id=758 data-nosnippet>758</a> current_partition_spec.as_ref().clone(),
-<a href=#759 id=759 data-nosnippet>759</a> )
-<a href=#760 id=760 data-nosnippet>760</a> .build_v2_data();
-<a href=#761 id=761 data-nosnippet>761</a> writer
-<a href=#762 id=762 data-nosnippet>762</a> .add_entry(
-<a href=#763 id=763 data-nosnippet>763</a> ManifestEntry::builder()
-<a href=#764 id=764 data-nosnippet>764</a> .status(ManifestStatus::Added)
-<a href=#765 id=765 data-nosnippet>765</a> .data_file(
-<a href=#766 id=766 data-nosnippet>766</a> DataFileBuilder::default()
-<a href=#767 id=767 data-nosnippet>767</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#768 id=768 data-nosnippet>768</a> .content(DataContentType::Data)
-<a href=#769 id=769 data-nosnippet>769</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#770 id=770 data-nosnippet>770</a> .file_format(DataFileFormat::Parquet)
-<a href=#771 id=771 data-nosnippet>771</a> .file_size_in_bytes(parquet_file_size)
-<a href=#772 id=772 data-nosnippet>772</a> .record_count(<span class="number">1</span>)
-<a href=#773 id=773 data-nosnippet>773</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">100</span>))]))
-<a href=#774 id=774 data-nosnippet>774</a> .key_metadata(<span class="prelude-val">None</span>)
-<a href=#775 id=775 data-nosnippet>775</a> .build()
-<a href=#776 id=776 data-nosnippet>776</a> .unwrap(),
-<a href=#777 id=777 data-nosnippet>777</a> )
-<a href=#778 id=778 data-nosnippet>778</a> .build(),
-<a href=#779 id=779 data-nosnippet>779</a> )
-<a href=#780 id=780 data-nosnippet>780</a> .unwrap();
-<a href=#781 id=781 data-nosnippet>781</a> writer
-<a href=#782 id=782 data-nosnippet>782</a> .add_delete_entry(
-<a href=#783 id=783 data-nosnippet>783</a> ManifestEntry::builder()
-<a href=#784 id=784 data-nosnippet>784</a> .status(ManifestStatus::Deleted)
-<a href=#785 id=785 data-nosnippet>785</a> .snapshot_id(parent_snapshot.snapshot_id())
-<a href=#786 id=786 data-nosnippet>786</a> .sequence_number(parent_snapshot.sequence_number())
-<a href=#787 id=787 data-nosnippet>787</a> .file_sequence_number(parent_snapshot.sequence_number())
-<a href=#788 id=788 data-nosnippet>788</a> .data_file(
-<a href=#789 id=789 data-nosnippet>789</a> DataFileBuilder::default()
-<a href=#790 id=790 data-nosnippet>790</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#791 id=791 data-nosnippet>791</a> .content(DataContentType::Data)
-<a href=#792 id=792 data-nosnippet>792</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/2.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#793 id=793 data-nosnippet>793</a> .file_format(DataFileFormat::Parquet)
-<a href=#794 id=794 data-nosnippet>794</a> .file_size_in_bytes(parquet_file_size)
-<a href=#795 id=795 data-nosnippet>795</a> .record_count(<span class="number">1</span>)
-<a href=#796 id=796 data-nosnippet>796</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">200</span>))]))
-<a href=#797 id=797 data-nosnippet>797</a> .build()
-<a href=#798 id=798 data-nosnippet>798</a> .unwrap(),
-<a href=#799 id=799 data-nosnippet>799</a> )
-<a href=#800 id=800 data-nosnippet>800</a> .build(),
-<a href=#801 id=801 data-nosnippet>801</a> )
-<a href=#802 id=802 data-nosnippet>802</a> .unwrap();
-<a href=#803 id=803 data-nosnippet>803</a> writer
-<a href=#804 id=804 data-nosnippet>804</a> .add_existing_entry(
-<a href=#805 id=805 data-nosnippet>805</a> ManifestEntry::builder()
-<a href=#806 id=806 data-nosnippet>806</a> .status(ManifestStatus::Existing)
-<a href=#807 id=807 data-nosnippet>807</a> .snapshot_id(parent_snapshot.snapshot_id())
-<a href=#808 id=808 data-nosnippet>808</a> .sequence_number(parent_snapshot.sequence_number())
-<a href=#809 id=809 data-nosnippet>809</a> .file_sequence_number(parent_snapshot.sequence_number())
-<a href=#810 id=810 data-nosnippet>810</a> .data_file(
-<a href=#811 id=811 data-nosnippet>811</a> DataFileBuilder::default()
-<a href=#812 id=812 data-nosnippet>812</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#813 id=813 data-nosnippet>813</a> .content(DataContentType::Data)
-<a href=#814 id=814 data-nosnippet>814</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/3.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#815 id=815 data-nosnippet>815</a> .file_format(DataFileFormat::Parquet)
-<a href=#816 id=816 data-nosnippet>816</a> .file_size_in_bytes(parquet_file_size)
-<a href=#817 id=817 data-nosnippet>817</a> .record_count(<span class="number">1</span>)
-<a href=#818 id=818 data-nosnippet>818</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">300</span>))]))
-<a href=#819 id=819 data-nosnippet>819</a> .build()
-<a href=#820 id=820 data-nosnippet>820</a> .unwrap(),
-<a href=#821 id=821 data-nosnippet>821</a> )
-<a href=#822 id=822 data-nosnippet>822</a> .build(),
-<a href=#823 id=823 data-nosnippet>823</a> )
-<a href=#824 id=824 data-nosnippet>824</a> .unwrap();
-<a href=#825 id=825 data-nosnippet>825</a> <span class="kw">let </span>data_file_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
-<a href=#826 id=826 data-nosnippet>826</a>
-<a href=#827 id=827 data-nosnippet>827</a> <span class="comment">// Write to manifest list
-<a href=#828 id=828 data-nosnippet>828</a> </span><span class="kw">let </span><span class="kw-2">mut </span>manifest_list_write = ManifestListWriter::v2(
-<a href=#829 id=829 data-nosnippet>829</a> <span class="self">self</span>.table
-<a href=#830 id=830 data-nosnippet>830</a> .file_io()
-<a href=#831 id=831 data-nosnippet>831</a> .new_output(current_snapshot.manifest_list())
-<a href=#832 id=832 data-nosnippet>832</a> .unwrap(),
-<a href=#833 id=833 data-nosnippet>833</a> current_snapshot.snapshot_id(),
-<a href=#834 id=834 data-nosnippet>834</a> current_snapshot.parent_snapshot_id(),
-<a href=#835 id=835 data-nosnippet>835</a> current_snapshot.sequence_number(),
-<a href=#836 id=836 data-nosnippet>836</a> );
-<a href=#837 id=837 data-nosnippet>837</a> manifest_list_write
-<a href=#838 id=838 data-nosnippet>838</a> .add_manifests(<span class="macro">vec!</span>[data_file_manifest].into_iter())
-<a href=#839 id=839 data-nosnippet>839</a> .unwrap();
-<a href=#840 id=840 data-nosnippet>840</a> manifest_list_write.close().<span class="kw">await</span>.unwrap();
-<a href=#841 id=841 data-nosnippet>841</a> }
-<a href=#842 id=842 data-nosnippet>842</a>
-<a href=#843 id=843 data-nosnippet>843</a> <span class="doccomment">/// Writes identical Parquet data files (1.parquet, 2.parquet, 3.parquet)
-<a href=#844 id=844 data-nosnippet>844</a> /// and returns the file size in bytes.
-<a href=#845 id=845 data-nosnippet>845</a> </span><span class="kw">fn </span>write_parquet_data_files(<span class="kw-2">&</span><span class="self">self</span>) -> u64 {
-<a href=#846 id=846 data-nosnippet>846</a> std::fs::create_dir_all(<span class="kw-2">&</span><span class="self">self</span>.table_location).unwrap();
-<a href=#847 id=847 data-nosnippet>847</a>
-<a href=#848 id=848 data-nosnippet>848</a> <span class="kw">let </span>schema = {
-<a href=#849 id=849 data-nosnippet>849</a> <span class="kw">let </span>fields = <span class="macro">vec!</span>[
-<a href=#850 id=850 data-nosnippet>850</a> arrow_schema::Field::new(<span class="string">"x"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
-<a href=#851 id=851 data-nosnippet>851</a> .with_metadata(HashMap::from([(
-<a href=#852 id=852 data-nosnippet>852</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#853 id=853 data-nosnippet>853</a> <span class="string">"1"</span>.to_string(),
-<a href=#854 id=854 data-nosnippet>854</a> )])),
-<a href=#855 id=855 data-nosnippet>855</a> arrow_schema::Field::new(<span class="string">"y"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
-<a href=#856 id=856 data-nosnippet>856</a> .with_metadata(HashMap::from([(
-<a href=#857 id=857 data-nosnippet>857</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#858 id=858 data-nosnippet>858</a> <span class="string">"2"</span>.to_string(),
-<a href=#859 id=859 data-nosnippet>859</a> )])),
-<a href=#860 id=860 data-nosnippet>860</a> arrow_schema::Field::new(<span class="string">"z"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
-<a href=#861 id=861 data-nosnippet>861</a> .with_metadata(HashMap::from([(
-<a href=#862 id=862 data-nosnippet>862</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#863 id=863 data-nosnippet>863</a> <span class="string">"3"</span>.to_string(),
-<a href=#864 id=864 data-nosnippet>864</a> )])),
-<a href=#865 id=865 data-nosnippet>865</a> arrow_schema::Field::new(<span class="string">"a"</span>, arrow_schema::DataType::Utf8, <span class="bool-val">false</span>)
-<a href=#866 id=866 data-nosnippet>866</a> .with_metadata(HashMap::from([(
-<a href=#867 id=867 data-nosnippet>867</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#868 id=868 data-nosnippet>868</a> <span class="string">"4"</span>.to_string(),
-<a href=#869 id=869 data-nosnippet>869</a> )])),
-<a href=#870 id=870 data-nosnippet>870</a> arrow_schema::Field::new(<span class="string">"dbl"</span>, arrow_schema::DataType::Float64, <span class="bool-val">false</span>)
-<a href=#871 id=871 data-nosnippet>871</a> .with_metadata(HashMap::from([(
-<a href=#872 id=872 data-nosnippet>872</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#873 id=873 data-nosnippet>873</a> <span class="string">"5"</span>.to_string(),
-<a href=#874 id=874 data-nosnippet>874</a> )])),
-<a href=#875 id=875 data-nosnippet>875</a> arrow_schema::Field::new(<span class="string">"i32"</span>, arrow_schema::DataType::Int32, <span class="bool-val">false</span>)
-<a href=#876 id=876 data-nosnippet>876</a> .with_metadata(HashMap::from([(
-<a href=#877 id=877 data-nosnippet>877</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#878 id=878 data-nosnippet>878</a> <span class="string">"6"</span>.to_string(),
-<a href=#879 id=879 data-nosnippet>879</a> )])),
-<a href=#880 id=880 data-nosnippet>880</a> arrow_schema::Field::new(<span class="string">"i64"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
-<a href=#881 id=881 data-nosnippet>881</a> .with_metadata(HashMap::from([(
-<a href=#882 id=882 data-nosnippet>882</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#883 id=883 data-nosnippet>883</a> <span class="string">"7"</span>.to_string(),
-<a href=#884 id=884 data-nosnippet>884</a> )])),
-<a href=#885 id=885 data-nosnippet>885</a> arrow_schema::Field::new(<span class="string">"bool"</span>, arrow_schema::DataType::Boolean, <span class="bool-val">false</span>)
-<a href=#886 id=886 data-nosnippet>886</a> .with_metadata(HashMap::from([(
-<a href=#887 id=887 data-nosnippet>887</a> PARQUET_FIELD_ID_META_KEY.to_string(),
-<a href=#888 id=888 data-nosnippet>888</a> <span class="string">"8"</span>.to_string(),
-<a href=#889 id=889 data-nosnippet>889</a> )])),
-<a href=#890 id=890 data-nosnippet>890</a> ];
-<a href=#891 id=891 data-nosnippet>891</a> Arc::new(arrow_schema::Schema::new(fields))
-<a href=#892 id=892 data-nosnippet>892</a> };
-<a href=#893 id=893 data-nosnippet>893</a> <span class="comment">// x: [1, 1, 1, 1, ...]
-<a href=#894 id=894 data-nosnippet>894</a> </span><span class="kw">let </span>col1 = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">1024</span>])) <span class="kw">as </span>ArrayRef;
-<a href=#895 id=895 data-nosnippet>895</a>
-<a href=#896 id=896 data-nosnippet>896</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">2</span>; <span class="number">512</span>];
-<a href=#897 id=897 data-nosnippet>897</a> values.append(<span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">200</span>].as_mut());
-<a href=#898 id=898 data-nosnippet>898</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">300</span>].as_mut());
-<a href=#899 id=899 data-nosnippet>899</a> values.append(<span class="macro">vec!</span>[<span class="number">5</span>; <span class="number">12</span>].as_mut());
-<a href=#900 id=900 data-nosnippet>900</a>
-<a href=#901 id=901 data-nosnippet>901</a> <span class="comment">// y: [2, 2, 2, 2, ..., 3, 3, 3, 3, ..., 4, 4, 4, 4, ..., 5, 5, 5, 5]
-<a href=#902 id=902 data-nosnippet>902</a> </span><span class="kw">let </span>col2 = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#903 id=903 data-nosnippet>903</a>
-<a href=#904 id=904 data-nosnippet>904</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">512</span>];
-<a href=#905 id=905 data-nosnippet>905</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">512</span>].as_mut());
-<a href=#906 id=906 data-nosnippet>906</a>
-<a href=#907 id=907 data-nosnippet>907</a> <span class="comment">// z: [3, 3, 3, 3, ..., 4, 4, 4, 4]
-<a href=#908 id=908 data-nosnippet>908</a> </span><span class="kw">let </span>col3 = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#909 id=909 data-nosnippet>909</a>
-<a href=#910 id=910 data-nosnippet>910</a> <span class="comment">// a: ["Apache", "Apache", "Apache", ..., "Iceberg", "Iceberg", "Iceberg"]
-<a href=#911 id=911 data-nosnippet>911</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="string">"Apache"</span>; <span class="number">512</span>];
-<a href=#912 id=912 data-nosnippet>912</a> values.append(<span class="macro">vec!</span>[<span class="string">"Iceberg"</span>; <span class="number">512</span>].as_mut());
-<a href=#913 id=913 data-nosnippet>913</a> <span class="kw">let </span>col4 = Arc::new(StringArray::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#914 id=914 data-nosnippet>914</a>
-<a href=#915 id=915 data-nosnippet>915</a> <span class="comment">// dbl:
-<a href=#916 id=916 data-nosnippet>916</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">100.0f64</span>; <span class="number">512</span>];
-<a href=#917 id=917 data-nosnippet>917</a> values.append(<span class="macro">vec!</span>[<span class="number">150.0f64</span>; <span class="number">12</span>].as_mut());
-<a href=#918 id=918 data-nosnippet>918</a> values.append(<span class="macro">vec!</span>[<span class="number">200.0f64</span>; <span class="number">500</span>].as_mut());
-<a href=#919 id=919 data-nosnippet>919</a> <span class="kw">let </span>col5 = Arc::new(Float64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#920 id=920 data-nosnippet>920</a>
-<a href=#921 id=921 data-nosnippet>921</a> <span class="comment">// i32:
-<a href=#922 id=922 data-nosnippet>922</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">100i32</span>; <span class="number">512</span>];
-<a href=#923 id=923 data-nosnippet>923</a> values.append(<span class="macro">vec!</span>[<span class="number">150i32</span>; <span class="number">12</span>].as_mut());
-<a href=#924 id=924 data-nosnippet>924</a> values.append(<span class="macro">vec!</span>[<span class="number">200i32</span>; <span class="number">500</span>].as_mut());
-<a href=#925 id=925 data-nosnippet>925</a> <span class="kw">let </span>col6 = Arc::new(Int32Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#926 id=926 data-nosnippet>926</a>
-<a href=#927 id=927 data-nosnippet>927</a> <span class="comment">// i64:
-<a href=#928 id=928 data-nosnippet>928</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">100i64</span>; <span class="number">512</span>];
-<a href=#929 id=929 data-nosnippet>929</a> values.append(<span class="macro">vec!</span>[<span class="number">150i64</span>; <span class="number">12</span>].as_mut());
-<a href=#930 id=930 data-nosnippet>930</a> values.append(<span class="macro">vec!</span>[<span class="number">200i64</span>; <span class="number">500</span>].as_mut());
-<a href=#931 id=931 data-nosnippet>931</a> <span class="kw">let </span>col7 = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#932 id=932 data-nosnippet>932</a>
-<a href=#933 id=933 data-nosnippet>933</a> <span class="comment">// bool:
-<a href=#934 id=934 data-nosnippet>934</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="bool-val">false</span>; <span class="number">512</span>];
-<a href=#935 id=935 data-nosnippet>935</a> values.append(<span class="macro">vec!</span>[<span class="bool-val">true</span>; <span class="number">512</span>].as_mut());
-<a href=#936 id=936 data-nosnippet>936</a> <span class="kw">let </span>values: BooleanArray = values.into();
-<a href=#937 id=937 data-nosnippet>937</a> <span class="kw">let </span>col8 = Arc::new(values) <span class="kw">as </span>ArrayRef;
-<a href=#938 id=938 data-nosnippet>938</a>
-<a href=#939 id=939 data-nosnippet>939</a> <span class="kw">let </span>to_write = RecordBatch::try_new(schema.clone(), <span class="macro">vec!</span>[
-<a href=#940 id=940 data-nosnippet>940</a> col1, col2, col3, col4, col5, col6, col7, col8,
-<a href=#941 id=941 data-nosnippet>941</a> ])
-<a href=#942 id=942 data-nosnippet>942</a> .unwrap();
-<a href=#943 id=943 data-nosnippet>943</a>
-<a href=#944 id=944 data-nosnippet>944</a> <span class="comment">// Write the Parquet files
-<a href=#945 id=945 data-nosnippet>945</a> </span><span class="kw">let </span>props = WriterProperties::builder()
-<a href=#946 id=946 data-nosnippet>946</a> .set_compression(Compression::SNAPPY)
-<a href=#947 id=947 data-nosnippet>947</a> .build();
-<a href=#948 id=948 data-nosnippet>948</a>
-<a href=#949 id=949 data-nosnippet>949</a> <span class="kw">for </span>n <span class="kw">in </span><span class="number">1</span>..=<span class="number">3 </span>{
-<a href=#950 id=950 data-nosnippet>950</a> <span class="kw">let </span>file = File::create(<span class="macro">format!</span>(<span class="string">"{}/{}.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location, n)).unwrap();
-<a href=#951 id=951 data-nosnippet>951</a> <span class="kw">let </span><span class="kw-2">mut </span>writer =
-<a href=#952 id=952 data-nosnippet>952</a> ArrowWriter::try_new(file, to_write.schema(), <span class="prelude-val">Some</span>(props.clone())).unwrap();
+<a href=#750 id=750 data-nosnippet>750</a> <span class="kw">let </span>table = Table::builder()
+<a href=#751 id=751 data-nosnippet>751</a> .metadata(table_metadata)
+<a href=#752 id=752 data-nosnippet>752</a> .identifier(TableIdent::from_strs([<span class="string">"db"</span>, <span class="string">"table1"</span>]).unwrap())
+<a href=#753 id=753 data-nosnippet>753</a> .file_io(file_io.clone())
+<a href=#754 id=754 data-nosnippet>754</a> .metadata_location(table_metadata1_location.to_str().unwrap())
+<a href=#755 id=755 data-nosnippet>755</a> .build()
+<a href=#756 id=756 data-nosnippet>756</a> .unwrap();
+<a href=#757 id=757 data-nosnippet>757</a>
+<a href=#758 id=758 data-nosnippet>758</a> <span class="self">Self </span>{
+<a href=#759 id=759 data-nosnippet>759</a> table_location: table_location.to_str().unwrap().to_string(),
+<a href=#760 id=760 data-nosnippet>760</a> table,
+<a href=#761 id=761 data-nosnippet>761</a> }
+<a href=#762 id=762 data-nosnippet>762</a> }
+<a href=#763 id=763 data-nosnippet>763</a>
+<a href=#764 id=764 data-nosnippet>764</a> <span class="kw">fn </span>next_manifest_file(<span class="kw-2">&</span><span class="self">self</span>) -> OutputFile {
+<a href=#765 id=765 data-nosnippet>765</a> <span class="self">self</span>.table
+<a href=#766 id=766 data-nosnippet>766</a> .file_io()
+<a href=#767 id=767 data-nosnippet>767</a> .new_output(<span class="macro">format!</span>(
+<a href=#768 id=768 data-nosnippet>768</a> <span class="string">"{}/metadata/manifest_{}.avro"</span>,
+<a href=#769 id=769 data-nosnippet>769</a> <span class="self">self</span>.table_location,
+<a href=#770 id=770 data-nosnippet>770</a> Uuid::new_v4()
+<a href=#771 id=771 data-nosnippet>771</a> ))
+<a href=#772 id=772 data-nosnippet>772</a> .unwrap()
+<a href=#773 id=773 data-nosnippet>773</a> }
+<a href=#774 id=774 data-nosnippet>774</a>
+<a href=#775 id=775 data-nosnippet>775</a> <span class="kw">pub async fn </span>setup_manifest_files(<span class="kw-2">&mut </span><span class="self">self</span>) {
+<a href=#776 id=776 data-nosnippet>776</a> <span class="kw">let </span>current_snapshot = <span class="self">self</span>.table.metadata().current_snapshot().unwrap();
+<a href=#777 id=777 data-nosnippet>777</a> <span class="kw">let </span>parent_snapshot = current_snapshot
+<a href=#778 id=778 data-nosnippet>778</a> .parent_snapshot(<span class="self">self</span>.table.metadata())
+<a href=#779 id=779 data-nosnippet>779</a> .unwrap();
+<a href=#780 id=780 data-nosnippet>780</a> <span class="kw">let </span>current_schema = current_snapshot.schema(<span class="self">self</span>.table.metadata()).unwrap();
+<a href=#781 id=781 data-nosnippet>781</a> <span class="kw">let </span>current_partition_spec = <span class="self">self</span>.table.metadata().default_partition_spec();
+<a href=#782 id=782 data-nosnippet>782</a>
+<a href=#783 id=783 data-nosnippet>783</a> <span class="comment">// Write the data files first, then use the file size in the manifest entries
+<a href=#784 id=784 data-nosnippet>784</a> </span><span class="kw">let </span>parquet_file_size = <span class="self">self</span>.write_parquet_data_files();
+<a href=#785 id=785 data-nosnippet>785</a>
+<a href=#786 id=786 data-nosnippet>786</a> <span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
+<a href=#787 id=787 data-nosnippet>787</a> <span class="self">self</span>.next_manifest_file(),
+<a href=#788 id=788 data-nosnippet>788</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
+<a href=#789 id=789 data-nosnippet>789</a> <span class="prelude-val">None</span>,
+<a href=#790 id=790 data-nosnippet>790</a> current_schema.clone(),
+<a href=#791 id=791 data-nosnippet>791</a> current_partition_spec.as_ref().clone(),
+<a href=#792 id=792 data-nosnippet>792</a> )
+<a href=#793 id=793 data-nosnippet>793</a> .build_v2_data();
+<a href=#794 id=794 data-nosnippet>794</a> writer
+<a href=#795 id=795 data-nosnippet>795</a> .add_entry(
+<a href=#796 id=796 data-nosnippet>796</a> ManifestEntry::builder()
+<a href=#797 id=797 data-nosnippet>797</a> .status(ManifestStatus::Added)
+<a href=#798 id=798 data-nosnippet>798</a> .data_file(
+<a href=#799 id=799 data-nosnippet>799</a> DataFileBuilder::default()
+<a href=#800 id=800 data-nosnippet>800</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#801 id=801 data-nosnippet>801</a> .content(DataContentType::Data)
+<a href=#802 id=802 data-nosnippet>802</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#803 id=803 data-nosnippet>803</a> .file_format(DataFileFormat::Parquet)
+<a href=#804 id=804 data-nosnippet>804</a> .file_size_in_bytes(parquet_file_size)
+<a href=#805 id=805 data-nosnippet>805</a> .record_count(<span class="number">1</span>)
+<a href=#806 id=806 data-nosnippet>806</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">100</span>))]))
+<a href=#807 id=807 data-nosnippet>807</a> .key_metadata(<span class="prelude-val">None</span>)
+<a href=#808 id=808 data-nosnippet>808</a> .build()
+<a href=#809 id=809 data-nosnippet>809</a> .unwrap(),
+<a href=#810 id=810 data-nosnippet>810</a> )
+<a href=#811 id=811 data-nosnippet>811</a> .build(),
+<a href=#812 id=812 data-nosnippet>812</a> )
+<a href=#813 id=813 data-nosnippet>813</a> .unwrap();
+<a href=#814 id=814 data-nosnippet>814</a> writer
+<a href=#815 id=815 data-nosnippet>815</a> .add_delete_entry(
+<a href=#816 id=816 data-nosnippet>816</a> ManifestEntry::builder()
+<a href=#817 id=817 data-nosnippet>817</a> .status(ManifestStatus::Deleted)
+<a href=#818 id=818 data-nosnippet>818</a> .snapshot_id(parent_snapshot.snapshot_id())
+<a href=#819 id=819 data-nosnippet>819</a> .sequence_number(parent_snapshot.sequence_number())
+<a href=#820 id=820 data-nosnippet>820</a> .file_sequence_number(parent_snapshot.sequence_number())
+<a href=#821 id=821 data-nosnippet>821</a> .data_file(
+<a href=#822 id=822 data-nosnippet>822</a> DataFileBuilder::default()
+<a href=#823 id=823 data-nosnippet>823</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#824 id=824 data-nosnippet>824</a> .content(DataContentType::Data)
+<a href=#825 id=825 data-nosnippet>825</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/2.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#826 id=826 data-nosnippet>826</a> .file_format(DataFileFormat::Parquet)
+<a href=#827 id=827 data-nosnippet>827</a> .file_size_in_bytes(parquet_file_size)
+<a href=#828 id=828 data-nosnippet>828</a> .record_count(<span class="number">1</span>)
+<a href=#829 id=829 data-nosnippet>829</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">200</span>))]))
+<a href=#830 id=830 data-nosnippet>830</a> .build()
+<a href=#831 id=831 data-nosnippet>831</a> .unwrap(),
+<a href=#832 id=832 data-nosnippet>832</a> )
+<a href=#833 id=833 data-nosnippet>833</a> .build(),
+<a href=#834 id=834 data-nosnippet>834</a> )
+<a href=#835 id=835 data-nosnippet>835</a> .unwrap();
+<a href=#836 id=836 data-nosnippet>836</a> writer
+<a href=#837 id=837 data-nosnippet>837</a> .add_existing_entry(
+<a href=#838 id=838 data-nosnippet>838</a> ManifestEntry::builder()
+<a href=#839 id=839 data-nosnippet>839</a> .status(ManifestStatus::Existing)
+<a href=#840 id=840 data-nosnippet>840</a> .snapshot_id(parent_snapshot.snapshot_id())
+<a href=#841 id=841 data-nosnippet>841</a> .sequence_number(parent_snapshot.sequence_number())
+<a href=#842 id=842 data-nosnippet>842</a> .file_sequence_number(parent_snapshot.sequence_number())
+<a href=#843 id=843 data-nosnippet>843</a> .data_file(
+<a href=#844 id=844 data-nosnippet>844</a> DataFileBuilder::default()
+<a href=#845 id=845 data-nosnippet>845</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#846 id=846 data-nosnippet>846</a> .content(DataContentType::Data)
+<a href=#847 id=847 data-nosnippet>847</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/3.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#848 id=848 data-nosnippet>848</a> .file_format(DataFileFormat::Parquet)
+<a href=#849 id=849 data-nosnippet>849</a> .file_size_in_bytes(parquet_file_size)
+<a href=#850 id=850 data-nosnippet>850</a> .record_count(<span class="number">1</span>)
+<a href=#851 id=851 data-nosnippet>851</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">300</span>))]))
+<a href=#852 id=852 data-nosnippet>852</a> .build()
+<a href=#853 id=853 data-nosnippet>853</a> .unwrap(),
+<a href=#854 id=854 data-nosnippet>854</a> )
+<a href=#855 id=855 data-nosnippet>855</a> .build(),
+<a href=#856 id=856 data-nosnippet>856</a> )
+<a href=#857 id=857 data-nosnippet>857</a> .unwrap();
+<a href=#858 id=858 data-nosnippet>858</a> <span class="kw">let </span>data_file_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
+<a href=#859 id=859 data-nosnippet>859</a>
+<a href=#860 id=860 data-nosnippet>860</a> <span class="comment">// Write to manifest list
+<a href=#861 id=861 data-nosnippet>861</a> </span><span class="kw">let </span><span class="kw-2">mut </span>manifest_list_write = ManifestListWriter::v2(
+<a href=#862 id=862 data-nosnippet>862</a> <span class="self">self</span>.table
+<a href=#863 id=863 data-nosnippet>863</a> .file_io()
+<a href=#864 id=864 data-nosnippet>864</a> .new_output(current_snapshot.manifest_list())
+<a href=#865 id=865 data-nosnippet>865</a> .unwrap(),
+<a href=#866 id=866 data-nosnippet>866</a> current_snapshot.snapshot_id(),
+<a href=#867 id=867 data-nosnippet>867</a> current_snapshot.parent_snapshot_id(),
+<a href=#868 id=868 data-nosnippet>868</a> current_snapshot.sequence_number(),
+<a href=#869 id=869 data-nosnippet>869</a> );
+<a href=#870 id=870 data-nosnippet>870</a> manifest_list_write
+<a href=#871 id=871 data-nosnippet>871</a> .add_manifests(<span class="macro">vec!</span>[data_file_manifest].into_iter())
+<a href=#872 id=872 data-nosnippet>872</a> .unwrap();
+<a href=#873 id=873 data-nosnippet>873</a> manifest_list_write.close().<span class="kw">await</span>.unwrap();
+<a href=#874 id=874 data-nosnippet>874</a> }
+<a href=#875 id=875 data-nosnippet>875</a>
+<a href=#876 id=876 data-nosnippet>876</a> <span class="doccomment">/// Writes identical Parquet data files (1.parquet, 2.parquet, 3.parquet)
+<a href=#877 id=877 data-nosnippet>877</a> /// and returns the file size in bytes.
+<a href=#878 id=878 data-nosnippet>878</a> </span><span class="kw">fn </span>write_parquet_data_files(<span class="kw-2">&</span><span class="self">self</span>) -> u64 {
+<a href=#879 id=879 data-nosnippet>879</a> std::fs::create_dir_all(<span class="kw-2">&</span><span class="self">self</span>.table_location).unwrap();
+<a href=#880 id=880 data-nosnippet>880</a>
+<a href=#881 id=881 data-nosnippet>881</a> <span class="kw">let </span>schema = {
+<a href=#882 id=882 data-nosnippet>882</a> <span class="kw">let </span>fields = <span class="macro">vec!</span>[
+<a href=#883 id=883 data-nosnippet>883</a> arrow_schema::Field::new(<span class="string">"x"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
+<a href=#884 id=884 data-nosnippet>884</a> .with_metadata(HashMap::from([(
+<a href=#885 id=885 data-nosnippet>885</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#886 id=886 data-nosnippet>886</a> <span class="string">"1"</span>.to_string(),
+<a href=#887 id=887 data-nosnippet>887</a> )])),
+<a href=#888 id=888 data-nosnippet>888</a> arrow_schema::Field::new(<span class="string">"y"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
+<a href=#889 id=889 data-nosnippet>889</a> .with_metadata(HashMap::from([(
+<a href=#890 id=890 data-nosnippet>890</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#891 id=891 data-nosnippet>891</a> <span class="string">"2"</span>.to_string(),
+<a href=#892 id=892 data-nosnippet>892</a> )])),
+<a href=#893 id=893 data-nosnippet>893</a> arrow_schema::Field::new(<span class="string">"z"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
+<a href=#894 id=894 data-nosnippet>894</a> .with_metadata(HashMap::from([(
+<a href=#895 id=895 data-nosnippet>895</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#896 id=896 data-nosnippet>896</a> <span class="string">"3"</span>.to_string(),
+<a href=#897 id=897 data-nosnippet>897</a> )])),
+<a href=#898 id=898 data-nosnippet>898</a> arrow_schema::Field::new(<span class="string">"a"</span>, arrow_schema::DataType::Utf8, <span class="bool-val">false</span>)
+<a href=#899 id=899 data-nosnippet>899</a> .with_metadata(HashMap::from([(
+<a href=#900 id=900 data-nosnippet>900</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#901 id=901 data-nosnippet>901</a> <span class="string">"4"</span>.to_string(),
+<a href=#902 id=902 data-nosnippet>902</a> )])),
+<a href=#903 id=903 data-nosnippet>903</a> arrow_schema::Field::new(<span class="string">"dbl"</span>, arrow_schema::DataType::Float64, <span class="bool-val">false</span>)
+<a href=#904 id=904 data-nosnippet>904</a> .with_metadata(HashMap::from([(
+<a href=#905 id=905 data-nosnippet>905</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#906 id=906 data-nosnippet>906</a> <span class="string">"5"</span>.to_string(),
+<a href=#907 id=907 data-nosnippet>907</a> )])),
+<a href=#908 id=908 data-nosnippet>908</a> arrow_schema::Field::new(<span class="string">"i32"</span>, arrow_schema::DataType::Int32, <span class="bool-val">false</span>)
+<a href=#909 id=909 data-nosnippet>909</a> .with_metadata(HashMap::from([(
+<a href=#910 id=910 data-nosnippet>910</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#911 id=911 data-nosnippet>911</a> <span class="string">"6"</span>.to_string(),
+<a href=#912 id=912 data-nosnippet>912</a> )])),
+<a href=#913 id=913 data-nosnippet>913</a> arrow_schema::Field::new(<span class="string">"i64"</span>, arrow_schema::DataType::Int64, <span class="bool-val">false</span>)
+<a href=#914 id=914 data-nosnippet>914</a> .with_metadata(HashMap::from([(
+<a href=#915 id=915 data-nosnippet>915</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#916 id=916 data-nosnippet>916</a> <span class="string">"7"</span>.to_string(),
+<a href=#917 id=917 data-nosnippet>917</a> )])),
+<a href=#918 id=918 data-nosnippet>918</a> arrow_schema::Field::new(<span class="string">"bool"</span>, arrow_schema::DataType::Boolean, <span class="bool-val">false</span>)
+<a href=#919 id=919 data-nosnippet>919</a> .with_metadata(HashMap::from([(
+<a href=#920 id=920 data-nosnippet>920</a> PARQUET_FIELD_ID_META_KEY.to_string(),
+<a href=#921 id=921 data-nosnippet>921</a> <span class="string">"8"</span>.to_string(),
+<a href=#922 id=922 data-nosnippet>922</a> )])),
+<a href=#923 id=923 data-nosnippet>923</a> ];
+<a href=#924 id=924 data-nosnippet>924</a> Arc::new(arrow_schema::Schema::new(fields))
+<a href=#925 id=925 data-nosnippet>925</a> };
+<a href=#926 id=926 data-nosnippet>926</a> <span class="comment">// x: [1, 1, 1, 1, ...]
+<a href=#927 id=927 data-nosnippet>927</a> </span><span class="kw">let </span>col1 = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">1024</span>])) <span class="kw">as </span>ArrayRef;
+<a href=#928 id=928 data-nosnippet>928</a>
+<a href=#929 id=929 data-nosnippet>929</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">2</span>; <span class="number">512</span>];
+<a href=#930 id=930 data-nosnippet>930</a> values.append(<span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">200</span>].as_mut());
+<a href=#931 id=931 data-nosnippet>931</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">300</span>].as_mut());
+<a href=#932 id=932 data-nosnippet>932</a> values.append(<span class="macro">vec!</span>[<span class="number">5</span>; <span class="number">12</span>].as_mut());
+<a href=#933 id=933 data-nosnippet>933</a>
+<a href=#934 id=934 data-nosnippet>934</a> <span class="comment">// y: [2, 2, 2, 2, ..., 3, 3, 3, 3, ..., 4, 4, 4, 4, ..., 5, 5, 5, 5]
+<a href=#935 id=935 data-nosnippet>935</a> </span><span class="kw">let </span>col2 = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#936 id=936 data-nosnippet>936</a>
+<a href=#937 id=937 data-nosnippet>937</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">512</span>];
+<a href=#938 id=938 data-nosnippet>938</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">512</span>].as_mut());
+<a href=#939 id=939 data-nosnippet>939</a>
+<a href=#940 id=940 data-nosnippet>940</a> <span class="comment">// z: [3, 3, 3, 3, ..., 4, 4, 4, 4]
+<a href=#941 id=941 data-nosnippet>941</a> </span><span class="kw">let </span>col3 = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#942 id=942 data-nosnippet>942</a>
+<a href=#943 id=943 data-nosnippet>943</a> <span class="comment">// a: ["Apache", "Apache", "Apache", ..., "Iceberg", "Iceberg", "Iceberg"]
+<a href=#944 id=944 data-nosnippet>944</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="string">"Apache"</span>; <span class="number">512</span>];
+<a href=#945 id=945 data-nosnippet>945</a> values.append(<span class="macro">vec!</span>[<span class="string">"Iceberg"</span>; <span class="number">512</span>].as_mut());
+<a href=#946 id=946 data-nosnippet>946</a> <span class="kw">let </span>col4 = Arc::new(StringArray::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#947 id=947 data-nosnippet>947</a>
+<a href=#948 id=948 data-nosnippet>948</a> <span class="comment">// dbl:
+<a href=#949 id=949 data-nosnippet>949</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">100.0f64</span>; <span class="number">512</span>];
+<a href=#950 id=950 data-nosnippet>950</a> values.append(<span class="macro">vec!</span>[<span class="number">150.0f64</span>; <span class="number">12</span>].as_mut());
+<a href=#951 id=951 data-nosnippet>951</a> values.append(<span class="macro">vec!</span>[<span class="number">200.0f64</span>; <span class="number">500</span>].as_mut());
+<a href=#952 id=952 data-nosnippet>952</a> <span class="kw">let </span>col5 = Arc::new(Float64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
<a href=#953 id=953 data-nosnippet>953</a>
-<a href=#954 id=954 data-nosnippet>954</a> writer.write(<span class="kw-2">&</span>to_write).expect(<span class="string">"Writing batch"</span>);
-<a href=#955 id=955 data-nosnippet>955</a>
-<a href=#956 id=956 data-nosnippet>956</a> <span class="comment">// writer must be closed to write footer
-<a href=#957 id=957 data-nosnippet>957</a> </span>writer.close().unwrap();
-<a href=#958 id=958 data-nosnippet>958</a> }
+<a href=#954 id=954 data-nosnippet>954</a> <span class="comment">// i32:
+<a href=#955 id=955 data-nosnippet>955</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">100i32</span>; <span class="number">512</span>];
+<a href=#956 id=956 data-nosnippet>956</a> values.append(<span class="macro">vec!</span>[<span class="number">150i32</span>; <span class="number">12</span>].as_mut());
+<a href=#957 id=957 data-nosnippet>957</a> values.append(<span class="macro">vec!</span>[<span class="number">200i32</span>; <span class="number">500</span>].as_mut());
+<a href=#958 id=958 data-nosnippet>958</a> <span class="kw">let </span>col6 = Arc::new(Int32Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
<a href=#959 id=959 data-nosnippet>959</a>
-<a href=#960 id=960 data-nosnippet>960</a> std::fs::metadata(<span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#961 id=961 data-nosnippet>961</a> .unwrap()
-<a href=#962 id=962 data-nosnippet>962</a> .len()
-<a href=#963 id=963 data-nosnippet>963</a> }
-<a href=#964 id=964 data-nosnippet>964</a>
-<a href=#965 id=965 data-nosnippet>965</a> <span class="kw">pub async fn </span>setup_unpartitioned_manifest_files(<span class="kw-2">&mut </span><span class="self">self</span>) {
-<a href=#966 id=966 data-nosnippet>966</a> <span class="kw">let </span>current_snapshot = <span class="self">self</span>.table.metadata().current_snapshot().unwrap();
-<a href=#967 id=967 data-nosnippet>967</a> <span class="kw">let </span>parent_snapshot = current_snapshot
-<a href=#968 id=968 data-nosnippet>968</a> .parent_snapshot(<span class="self">self</span>.table.metadata())
-<a href=#969 id=969 data-nosnippet>969</a> .unwrap();
-<a href=#970 id=970 data-nosnippet>970</a> <span class="kw">let </span>current_schema = current_snapshot.schema(<span class="self">self</span>.table.metadata()).unwrap();
-<a href=#971 id=971 data-nosnippet>971</a> <span class="kw">let </span>current_partition_spec = Arc::new(PartitionSpec::unpartition_spec());
-<a href=#972 id=972 data-nosnippet>972</a>
-<a href=#973 id=973 data-nosnippet>973</a> <span class="comment">// Write the data files first, then use the file size in the manifest entries
-<a href=#974 id=974 data-nosnippet>974</a> </span><span class="kw">let </span>parquet_file_size = <span class="self">self</span>.write_parquet_data_files();
-<a href=#975 id=975 data-nosnippet>975</a>
-<a href=#976 id=976 data-nosnippet>976</a> <span class="comment">// Write data files using an empty partition for unpartitioned tables.
-<a href=#977 id=977 data-nosnippet>977</a> </span><span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
-<a href=#978 id=978 data-nosnippet>978</a> <span class="self">self</span>.next_manifest_file(),
-<a href=#979 id=979 data-nosnippet>979</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
-<a href=#980 id=980 data-nosnippet>980</a> <span class="prelude-val">None</span>,
-<a href=#981 id=981 data-nosnippet>981</a> current_schema.clone(),
-<a href=#982 id=982 data-nosnippet>982</a> current_partition_spec.as_ref().clone(),
-<a href=#983 id=983 data-nosnippet>983</a> )
-<a href=#984 id=984 data-nosnippet>984</a> .build_v2_data();
-<a href=#985 id=985 data-nosnippet>985</a>
-<a href=#986 id=986 data-nosnippet>986</a> <span class="comment">// Create an empty partition value.
-<a href=#987 id=987 data-nosnippet>987</a> </span><span class="kw">let </span>empty_partition = Struct::empty();
+<a href=#960 id=960 data-nosnippet>960</a> <span class="comment">// i64:
+<a href=#961 id=961 data-nosnippet>961</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">100i64</span>; <span class="number">512</span>];
+<a href=#962 id=962 data-nosnippet>962</a> values.append(<span class="macro">vec!</span>[<span class="number">150i64</span>; <span class="number">12</span>].as_mut());
+<a href=#963 id=963 data-nosnippet>963</a> values.append(<span class="macro">vec!</span>[<span class="number">200i64</span>; <span class="number">500</span>].as_mut());
+<a href=#964 id=964 data-nosnippet>964</a> <span class="kw">let </span>col7 = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#965 id=965 data-nosnippet>965</a>
+<a href=#966 id=966 data-nosnippet>966</a> <span class="comment">// bool:
+<a href=#967 id=967 data-nosnippet>967</a> </span><span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="bool-val">false</span>; <span class="number">512</span>];
+<a href=#968 id=968 data-nosnippet>968</a> values.append(<span class="macro">vec!</span>[<span class="bool-val">true</span>; <span class="number">512</span>].as_mut());
+<a href=#969 id=969 data-nosnippet>969</a> <span class="kw">let </span>values: BooleanArray = values.into();
+<a href=#970 id=970 data-nosnippet>970</a> <span class="kw">let </span>col8 = Arc::new(values) <span class="kw">as </span>ArrayRef;
+<a href=#971 id=971 data-nosnippet>971</a>
+<a href=#972 id=972 data-nosnippet>972</a> <span class="kw">let </span>to_write = RecordBatch::try_new(schema.clone(), <span class="macro">vec!</span>[
+<a href=#973 id=973 data-nosnippet>973</a> col1, col2, col3, col4, col5, col6, col7, col8,
+<a href=#974 id=974 data-nosnippet>974</a> ])
+<a href=#975 id=975 data-nosnippet>975</a> .unwrap();
+<a href=#976 id=976 data-nosnippet>976</a>
+<a href=#977 id=977 data-nosnippet>977</a> <span class="comment">// Write the Parquet files
+<a href=#978 id=978 data-nosnippet>978</a> </span><span class="kw">let </span>props = WriterProperties::builder()
+<a href=#979 id=979 data-nosnippet>979</a> .set_compression(Compression::SNAPPY)
+<a href=#980 id=980 data-nosnippet>980</a> .build();
+<a href=#981 id=981 data-nosnippet>981</a>
+<a href=#982 id=982 data-nosnippet>982</a> <span class="kw">for </span>n <span class="kw">in </span><span class="number">1</span>..=<span class="number">3 </span>{
+<a href=#983 id=983 data-nosnippet>983</a> <span class="kw">let </span>file = File::create(<span class="macro">format!</span>(<span class="string">"{}/{}.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location, n)).unwrap();
+<a href=#984 id=984 data-nosnippet>984</a> <span class="kw">let </span><span class="kw-2">mut </span>writer =
+<a href=#985 id=985 data-nosnippet>985</a> ArrowWriter::try_new(file, to_write.schema(), <span class="prelude-val">Some</span>(props.clone())).unwrap();
+<a href=#986 id=986 data-nosnippet>986</a>
+<a href=#987 id=987 data-nosnippet>987</a> writer.write(<span class="kw-2">&</span>to_write).expect(<span class="string">"Writing batch"</span>);
<a href=#988 id=988 data-nosnippet>988</a>
-<a href=#989 id=989 data-nosnippet>989</a> writer
-<a href=#990 id=990 data-nosnippet>990</a> .add_entry(
-<a href=#991 id=991 data-nosnippet>991</a> ManifestEntry::builder()
-<a href=#992 id=992 data-nosnippet>992</a> .status(ManifestStatus::Added)
-<a href=#993 id=993 data-nosnippet>993</a> .data_file(
-<a href=#994 id=994 data-nosnippet>994</a> DataFileBuilder::default()
-<a href=#995 id=995 data-nosnippet>995</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#996 id=996 data-nosnippet>996</a> .content(DataContentType::Data)
-<a href=#997 id=997 data-nosnippet>997</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#998 id=998 data-nosnippet>998</a> .file_format(DataFileFormat::Parquet)
-<a href=#999 id=999 data-nosnippet>999</a> .file_size_in_bytes(parquet_file_size)
-<a href=#1000 id=1000 data-nosnippet>1000</a> .record_count(<span class="number">1</span>)
-<a href=#1001 id=1001 data-nosnippet>1001</a> .partition(empty_partition.clone())
-<a href=#1002 id=1002 data-nosnippet>1002</a> .key_metadata(<span class="prelude-val">None</span>)
-<a href=#1003 id=1003 data-nosnippet>1003</a> .build()
-<a href=#1004 id=1004 data-nosnippet>1004</a> .unwrap(),
-<a href=#1005 id=1005 data-nosnippet>1005</a> )
-<a href=#1006 id=1006 data-nosnippet>1006</a> .build(),
-<a href=#1007 id=1007 data-nosnippet>1007</a> )
-<a href=#1008 id=1008 data-nosnippet>1008</a> .unwrap();
-<a href=#1009 id=1009 data-nosnippet>1009</a>
-<a href=#1010 id=1010 data-nosnippet>1010</a> writer
-<a href=#1011 id=1011 data-nosnippet>1011</a> .add_delete_entry(
-<a href=#1012 id=1012 data-nosnippet>1012</a> ManifestEntry::builder()
-<a href=#1013 id=1013 data-nosnippet>1013</a> .status(ManifestStatus::Deleted)
-<a href=#1014 id=1014 data-nosnippet>1014</a> .snapshot_id(parent_snapshot.snapshot_id())
-<a href=#1015 id=1015 data-nosnippet>1015</a> .sequence_number(parent_snapshot.sequence_number())
-<a href=#1016 id=1016 data-nosnippet>1016</a> .file_sequence_number(parent_snapshot.sequence_number())
-<a href=#1017 id=1017 data-nosnippet>1017</a> .data_file(
-<a href=#1018 id=1018 data-nosnippet>1018</a> DataFileBuilder::default()
-<a href=#1019 id=1019 data-nosnippet>1019</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#1020 id=1020 data-nosnippet>1020</a> .content(DataContentType::Data)
-<a href=#1021 id=1021 data-nosnippet>1021</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/2.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#1022 id=1022 data-nosnippet>1022</a> .file_format(DataFileFormat::Parquet)
-<a href=#1023 id=1023 data-nosnippet>1023</a> .file_size_in_bytes(parquet_file_size)
-<a href=#1024 id=1024 data-nosnippet>1024</a> .record_count(<span class="number">1</span>)
-<a href=#1025 id=1025 data-nosnippet>1025</a> .partition(empty_partition.clone())
-<a href=#1026 id=1026 data-nosnippet>1026</a> .build()
-<a href=#1027 id=1027 data-nosnippet>1027</a> .unwrap(),
-<a href=#1028 id=1028 data-nosnippet>1028</a> )
-<a href=#1029 id=1029 data-nosnippet>1029</a> .build(),
-<a href=#1030 id=1030 data-nosnippet>1030</a> )
-<a href=#1031 id=1031 data-nosnippet>1031</a> .unwrap();
-<a href=#1032 id=1032 data-nosnippet>1032</a>
-<a href=#1033 id=1033 data-nosnippet>1033</a> writer
-<a href=#1034 id=1034 data-nosnippet>1034</a> .add_existing_entry(
-<a href=#1035 id=1035 data-nosnippet>1035</a> ManifestEntry::builder()
-<a href=#1036 id=1036 data-nosnippet>1036</a> .status(ManifestStatus::Existing)
-<a href=#1037 id=1037 data-nosnippet>1037</a> .snapshot_id(parent_snapshot.snapshot_id())
-<a href=#1038 id=1038 data-nosnippet>1038</a> .sequence_number(parent_snapshot.sequence_number())
-<a href=#1039 id=1039 data-nosnippet>1039</a> .file_sequence_number(parent_snapshot.sequence_number())
-<a href=#1040 id=1040 data-nosnippet>1040</a> .data_file(
-<a href=#1041 id=1041 data-nosnippet>1041</a> DataFileBuilder::default()
-<a href=#1042 id=1042 data-nosnippet>1042</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#1043 id=1043 data-nosnippet>1043</a> .content(DataContentType::Data)
-<a href=#1044 id=1044 data-nosnippet>1044</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/3.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#1045 id=1045 data-nosnippet>1045</a> .file_format(DataFileFormat::Parquet)
-<a href=#1046 id=1046 data-nosnippet>1046</a> .file_size_in_bytes(parquet_file_size)
-<a href=#1047 id=1047 data-nosnippet>1047</a> .record_count(<span class="number">1</span>)
-<a href=#1048 id=1048 data-nosnippet>1048</a> .partition(empty_partition.clone())
-<a href=#1049 id=1049 data-nosnippet>1049</a> .build()
-<a href=#1050 id=1050 data-nosnippet>1050</a> .unwrap(),
-<a href=#1051 id=1051 data-nosnippet>1051</a> )
-<a href=#1052 id=1052 data-nosnippet>1052</a> .build(),
-<a href=#1053 id=1053 data-nosnippet>1053</a> )
-<a href=#1054 id=1054 data-nosnippet>1054</a> .unwrap();
-<a href=#1055 id=1055 data-nosnippet>1055</a>
-<a href=#1056 id=1056 data-nosnippet>1056</a> <span class="kw">let </span>data_file_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
-<a href=#1057 id=1057 data-nosnippet>1057</a>
-<a href=#1058 id=1058 data-nosnippet>1058</a> <span class="comment">// Write to manifest list
-<a href=#1059 id=1059 data-nosnippet>1059</a> </span><span class="kw">let </span><span class="kw-2">mut </span>manifest_list_write = ManifestListWriter::v2(
-<a href=#1060 id=1060 data-nosnippet>1060</a> <span class="self">self</span>.table
-<a href=#1061 id=1061 data-nosnippet>1061</a> .file_io()
-<a href=#1062 id=1062 data-nosnippet>1062</a> .new_output(current_snapshot.manifest_list())
-<a href=#1063 id=1063 data-nosnippet>1063</a> .unwrap(),
-<a href=#1064 id=1064 data-nosnippet>1064</a> current_snapshot.snapshot_id(),
-<a href=#1065 id=1065 data-nosnippet>1065</a> current_snapshot.parent_snapshot_id(),
-<a href=#1066 id=1066 data-nosnippet>1066</a> current_snapshot.sequence_number(),
-<a href=#1067 id=1067 data-nosnippet>1067</a> );
-<a href=#1068 id=1068 data-nosnippet>1068</a> manifest_list_write
-<a href=#1069 id=1069 data-nosnippet>1069</a> .add_manifests(<span class="macro">vec!</span>[data_file_manifest].into_iter())
-<a href=#1070 id=1070 data-nosnippet>1070</a> .unwrap();
-<a href=#1071 id=1071 data-nosnippet>1071</a> manifest_list_write.close().<span class="kw">await</span>.unwrap();
-<a href=#1072 id=1072 data-nosnippet>1072</a> }
-<a href=#1073 id=1073 data-nosnippet>1073</a>
-<a href=#1074 id=1074 data-nosnippet>1074</a> <span class="kw">pub async fn </span>setup_deadlock_manifests(<span class="kw-2">&mut </span><span class="self">self</span>) {
-<a href=#1075 id=1075 data-nosnippet>1075</a> <span class="kw">let </span>current_snapshot = <span class="self">self</span>.table.metadata().current_snapshot().unwrap();
-<a href=#1076 id=1076 data-nosnippet>1076</a> <span class="kw">let </span>_parent_snapshot = current_snapshot
-<a href=#1077 id=1077 data-nosnippet>1077</a> .parent_snapshot(<span class="self">self</span>.table.metadata())
-<a href=#1078 id=1078 data-nosnippet>1078</a> .unwrap();
-<a href=#1079 id=1079 data-nosnippet>1079</a> <span class="kw">let </span>current_schema = current_snapshot.schema(<span class="self">self</span>.table.metadata()).unwrap();
-<a href=#1080 id=1080 data-nosnippet>1080</a> <span class="kw">let </span>current_partition_spec = <span class="self">self</span>.table.metadata().default_partition_spec();
-<a href=#1081 id=1081 data-nosnippet>1081</a>
-<a href=#1082 id=1082 data-nosnippet>1082</a> <span class="comment">// 1. Write DATA manifest with MULTIPLE entries to fill buffer
-<a href=#1083 id=1083 data-nosnippet>1083</a> </span><span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
-<a href=#1084 id=1084 data-nosnippet>1084</a> <span class="self">self</span>.next_manifest_file(),
-<a href=#1085 id=1085 data-nosnippet>1085</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
-<a href=#1086 id=1086 data-nosnippet>1086</a> <span class="prelude-val">None</span>,
-<a href=#1087 id=1087 data-nosnippet>1087</a> current_schema.clone(),
-<a href=#1088 id=1088 data-nosnippet>1088</a> current_partition_spec.as_ref().clone(),
-<a href=#1089 id=1089 data-nosnippet>1089</a> )
-<a href=#1090 id=1090 data-nosnippet>1090</a> .build_v2_data();
-<a href=#1091 id=1091 data-nosnippet>1091</a>
-<a href=#1092 id=1092 data-nosnippet>1092</a> <span class="comment">// Add 10 data entries
-<a href=#1093 id=1093 data-nosnippet>1093</a> </span><span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..<span class="number">10 </span>{
-<a href=#1094 id=1094 data-nosnippet>1094</a> writer
-<a href=#1095 id=1095 data-nosnippet>1095</a> .add_entry(
-<a href=#1096 id=1096 data-nosnippet>1096</a> ManifestEntry::builder()
-<a href=#1097 id=1097 data-nosnippet>1097</a> .status(ManifestStatus::Added)
-<a href=#1098 id=1098 data-nosnippet>1098</a> .data_file(
-<a href=#1099 id=1099 data-nosnippet>1099</a> DataFileBuilder::default()
-<a href=#1100 id=1100 data-nosnippet>1100</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#1101 id=1101 data-nosnippet>1101</a> .content(DataContentType::Data)
-<a href=#1102 id=1102 data-nosnippet>1102</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/{}.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location, i))
-<a href=#1103 id=1103 data-nosnippet>1103</a> .file_format(DataFileFormat::Parquet)
-<a href=#1104 id=1104 data-nosnippet>1104</a> .file_size_in_bytes(<span class="number">100</span>)
-<a href=#1105 id=1105 data-nosnippet>1105</a> .record_count(<span class="number">1</span>)
-<a href=#1106 id=1106 data-nosnippet>1106</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">100</span>))]))
-<a href=#1107 id=1107 data-nosnippet>1107</a> .key_metadata(<span class="prelude-val">None</span>)
-<a href=#1108 id=1108 data-nosnippet>1108</a> .build()
-<a href=#1109 id=1109 data-nosnippet>1109</a> .unwrap(),
-<a href=#1110 id=1110 data-nosnippet>1110</a> )
-<a href=#1111 id=1111 data-nosnippet>1111</a> .build(),
-<a href=#1112 id=1112 data-nosnippet>1112</a> )
-<a href=#1113 id=1113 data-nosnippet>1113</a> .unwrap();
-<a href=#1114 id=1114 data-nosnippet>1114</a> }
-<a href=#1115 id=1115 data-nosnippet>1115</a> <span class="kw">let </span>data_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
-<a href=#1116 id=1116 data-nosnippet>1116</a>
-<a href=#1117 id=1117 data-nosnippet>1117</a> <span class="comment">// 2. Write DELETE manifest
-<a href=#1118 id=1118 data-nosnippet>1118</a> </span><span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
-<a href=#1119 id=1119 data-nosnippet>1119</a> <span class="self">self</span>.next_manifest_file(),
-<a href=#1120 id=1120 data-nosnippet>1120</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
-<a href=#1121 id=1121 data-nosnippet>1121</a> <span class="prelude-val">None</span>,
-<a href=#1122 id=1122 data-nosnippet>1122</a> current_schema.clone(),
-<a href=#1123 id=1123 data-nosnippet>1123</a> current_partition_spec.as_ref().clone(),
-<a href=#1124 id=1124 data-nosnippet>1124</a> )
-<a href=#1125 id=1125 data-nosnippet>1125</a> .build_v2_deletes();
-<a href=#1126 id=1126 data-nosnippet>1126</a>
-<a href=#1127 id=1127 data-nosnippet>1127</a> writer
-<a href=#1128 id=1128 data-nosnippet>1128</a> .add_entry(
-<a href=#1129 id=1129 data-nosnippet>1129</a> ManifestEntry::builder()
-<a href=#1130 id=1130 data-nosnippet>1130</a> .status(ManifestStatus::Added)
-<a href=#1131 id=1131 data-nosnippet>1131</a> .data_file(
-<a href=#1132 id=1132 data-nosnippet>1132</a> DataFileBuilder::default()
-<a href=#1133 id=1133 data-nosnippet>1133</a> .partition_spec_id(<span class="number">0</span>)
-<a href=#1134 id=1134 data-nosnippet>1134</a> .content(DataContentType::PositionDeletes)
-<a href=#1135 id=1135 data-nosnippet>1135</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/del.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
-<a href=#1136 id=1136 data-nosnippet>1136</a> .file_format(DataFileFormat::Parquet)
-<a href=#1137 id=1137 data-nosnippet>1137</a> .file_size_in_bytes(<span class="number">100</span>)
-<a href=#1138 id=1138 data-nosnippet>1138</a> .record_count(<span class="number">1</span>)
-<a href=#1139 id=1139 data-nosnippet>1139</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">100</span>))]))
-<a href=#1140 id=1140 data-nosnippet>1140</a> .build()
-<a href=#1141 id=1141 data-nosnippet>1141</a> .unwrap(),
-<a href=#1142 id=1142 data-nosnippet>1142</a> )
-<a href=#1143 id=1143 data-nosnippet>1143</a> .build(),
-<a href=#1144 id=1144 data-nosnippet>1144</a> )
-<a href=#1145 id=1145 data-nosnippet>1145</a> .unwrap();
-<a href=#1146 id=1146 data-nosnippet>1146</a> <span class="kw">let </span>delete_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
-<a href=#1147 id=1147 data-nosnippet>1147</a>
-<a href=#1148 id=1148 data-nosnippet>1148</a> <span class="comment">// Write to manifest list - DATA FIRST then DELETE
-<a href=#1149 id=1149 data-nosnippet>1149</a> // This order is crucial for reproduction
-<a href=#1150 id=1150 data-nosnippet>1150</a> </span><span class="kw">let </span><span class="kw-2">mut </span>manifest_list_write = ManifestListWriter::v2(
-<a href=#1151 id=1151 data-nosnippet>1151</a> <span class="self">self</span>.table
-<a href=#1152 id=1152 data-nosnippet>1152</a> .file_io()
-<a href=#1153 id=1153 data-nosnippet>1153</a> .new_output(current_snapshot.manifest_list())
-<a href=#1154 id=1154 data-nosnippet>1154</a> .unwrap(),
-<a href=#1155 id=1155 data-nosnippet>1155</a> current_snapshot.snapshot_id(),
-<a href=#1156 id=1156 data-nosnippet>1156</a> current_snapshot.parent_snapshot_id(),
-<a href=#1157 id=1157 data-nosnippet>1157</a> current_snapshot.sequence_number(),
-<a href=#1158 id=1158 data-nosnippet>1158</a> );
-<a href=#1159 id=1159 data-nosnippet>1159</a> manifest_list_write
-<a href=#1160 id=1160 data-nosnippet>1160</a> .add_manifests(<span class="macro">vec!</span>[data_manifest, delete_manifest].into_iter())
-<a href=#1161 id=1161 data-nosnippet>1161</a> .unwrap();
-<a href=#1162 id=1162 data-nosnippet>1162</a> manifest_list_write.close().<span class="kw">await</span>.unwrap();
-<a href=#1163 id=1163 data-nosnippet>1163</a> }
-<a href=#1164 id=1164 data-nosnippet>1164</a> }
-<a href=#1165 id=1165 data-nosnippet>1165</a>
-<a href=#1166 id=1166 data-nosnippet>1166</a> <span class="attr">#[test]
-<a href=#1167 id=1167 data-nosnippet>1167</a> </span><span class="kw">fn </span>test_table_scan_columns() {
-<a href=#1168 id=1168 data-nosnippet>1168</a> <span class="kw">let </span>table = TableTestFixture::new().table;
-<a href=#1169 id=1169 data-nosnippet>1169</a>
-<a href=#1170 id=1170 data-nosnippet>1170</a> <span class="kw">let </span>table_scan = table.scan().select([<span class="string">"x"</span>, <span class="string">"y"</span>]).build().unwrap();
-<a href=#1171 id=1171 data-nosnippet>1171</a> <span class="macro">assert_eq!</span>(
-<a href=#1172 id=1172 data-nosnippet>1172</a> <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="string">"x"</span>.to_string(), <span class="string">"y"</span>.to_string()]),
-<a href=#1173 id=1173 data-nosnippet>1173</a> table_scan.column_names
-<a href=#1174 id=1174 data-nosnippet>1174</a> );
-<a href=#1175 id=1175 data-nosnippet>1175</a>
-<a href=#1176 id=1176 data-nosnippet>1176</a> <span class="kw">let </span>table_scan = table
-<a href=#1177 id=1177 data-nosnippet>1177</a> .scan()
-<a href=#1178 id=1178 data-nosnippet>1178</a> .select([<span class="string">"x"</span>, <span class="string">"y"</span>])
-<a href=#1179 id=1179 data-nosnippet>1179</a> .select([<span class="string">"z"</span>])
-<a href=#1180 id=1180 data-nosnippet>1180</a> .build()
-<a href=#1181 id=1181 data-nosnippet>1181</a> .unwrap();
-<a href=#1182 id=1182 data-nosnippet>1182</a> <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="string">"z"</span>.to_string()]), table_scan.column_names);
-<a href=#1183 id=1183 data-nosnippet>1183</a> }
-<a href=#1184 id=1184 data-nosnippet>1184</a>
-<a href=#1185 id=1185 data-nosnippet>1185</a> <span class="attr">#[test]
-<a href=#1186 id=1186 data-nosnippet>1186</a> </span><span class="kw">fn </span>test_select_all() {
-<a href=#1187 id=1187 data-nosnippet>1187</a> <span class="kw">let </span>table = TableTestFixture::new().table;
-<a href=#1188 id=1188 data-nosnippet>1188</a>
-<a href=#1189 id=1189 data-nosnippet>1189</a> <span class="kw">let </span>table_scan = table.scan().select_all().build().unwrap();
-<a href=#1190 id=1190 data-nosnippet>1190</a> <span class="macro">assert!</span>(table_scan.column_names.is_none());
-<a href=#1191 id=1191 data-nosnippet>1191</a> }
-<a href=#1192 id=1192 data-nosnippet>1192</a>
-<a href=#1193 id=1193 data-nosnippet>1193</a> <span class="attr">#[test]
-<a href=#1194 id=1194 data-nosnippet>1194</a> </span><span class="kw">fn </span>test_select_no_exist_column() {
-<a href=#1195 id=1195 data-nosnippet>1195</a> <span class="kw">let </span>table = TableTestFixture::new().table;
-<a href=#1196 id=1196 data-nosnippet>1196</a>
-<a href=#1197 id=1197 data-nosnippet>1197</a> <span class="kw">let </span>table_scan = table.scan().select([<span class="string">"x"</span>, <span class="string">"y"</span>, <span class="string">"z"</span>, <span class="string">"a"</span>, <span class="string">"b"</span>]).build();
-<a href=#1198 id=1198 data-nosnippet>1198</a> <span class="macro">assert!</span>(table_scan.is_err());
-<a href=#1199 id=1199 data-nosnippet>1199</a> }
-<a href=#1200 id=1200 data-nosnippet>1200</a>
-<a href=#1201 id=1201 data-nosnippet>1201</a> <span class="attr">#[test]
-<a href=#1202 id=1202 data-nosnippet>1202</a> </span><span class="kw">fn </span>test_table_scan_default_snapshot_id() {
-<a href=#1203 id=1203 data-nosnippet>1203</a> <span class="kw">let </span>table = TableTestFixture::new().table;
-<a href=#1204 id=1204 data-nosnippet>1204</a>
-<a href=#1205 id=1205 data-nosnippet>1205</a> <span class="kw">let </span>table_scan = table.scan().build().unwrap();
-<a href=#1206 id=1206 data-nosnippet>1206</a> <span class="macro">assert_eq!</span>(
-<a href=#1207 id=1207 data-nosnippet>1207</a> table.metadata().current_snapshot().unwrap().snapshot_id(),
-<a href=#1208 id=1208 data-nosnippet>1208</a> table_scan.snapshot().unwrap().snapshot_id()
-<a href=#1209 id=1209 data-nosnippet>1209</a> );
-<a href=#1210 id=1210 data-nosnippet>1210</a> }
-<a href=#1211 id=1211 data-nosnippet>1211</a>
-<a href=#1212 id=1212 data-nosnippet>1212</a> <span class="attr">#[test]
-<a href=#1213 id=1213 data-nosnippet>1213</a> </span><span class="kw">fn </span>test_table_scan_non_exist_snapshot_id() {
-<a href=#1214 id=1214 data-nosnippet>1214</a> <span class="kw">let </span>table = TableTestFixture::new().table;
-<a href=#1215 id=1215 data-nosnippet>1215</a>
-<a href=#1216 id=1216 data-nosnippet>1216</a> <span class="kw">let </span>table_scan = table.scan().snapshot_id(<span class="number">1024</span>).build();
-<a href=#1217 id=1217 data-nosnippet>1217</a> <span class="macro">assert!</span>(table_scan.is_err());
-<a href=#1218 id=1218 data-nosnippet>1218</a> }
-<a href=#1219 id=1219 data-nosnippet>1219</a>
-<a href=#1220 id=1220 data-nosnippet>1220</a> <span class="attr">#[test]
-<a href=#1221 id=1221 data-nosnippet>1221</a> </span><span class="kw">fn </span>test_table_scan_with_snapshot_id() {
-<a href=#1222 id=1222 data-nosnippet>1222</a> <span class="kw">let </span>table = TableTestFixture::new().table;
-<a href=#1223 id=1223 data-nosnippet>1223</a>
-<a href=#1224 id=1224 data-nosnippet>1224</a> <span class="kw">let </span>table_scan = table
-<a href=#1225 id=1225 data-nosnippet>1225</a> .scan()
-<a href=#1226 id=1226 data-nosnippet>1226</a> .snapshot_id(<span class="number">3051729675574597004</span>)
-<a href=#1227 id=1227 data-nosnippet>1227</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1228 id=1228 data-nosnippet>1228</a> .build()
-<a href=#1229 id=1229 data-nosnippet>1229</a> .unwrap();
-<a href=#1230 id=1230 data-nosnippet>1230</a> <span class="macro">assert_eq!</span>(
-<a href=#1231 id=1231 data-nosnippet>1231</a> table_scan.snapshot().unwrap().snapshot_id(),
-<a href=#1232 id=1232 data-nosnippet>1232</a> <span class="number">3051729675574597004
-<a href=#1233 id=1233 data-nosnippet>1233</a> </span>);
-<a href=#1234 id=1234 data-nosnippet>1234</a> }
-<a href=#1235 id=1235 data-nosnippet>1235</a>
-<a href=#1236 id=1236 data-nosnippet>1236</a> <span class="attr">#[tokio::test]
-<a href=#1237 id=1237 data-nosnippet>1237</a> </span><span class="kw">async fn </span>test_plan_files_on_table_without_any_snapshots() {
-<a href=#1238 id=1238 data-nosnippet>1238</a> <span class="kw">let </span>table = TableTestFixture::new_empty().table;
-<a href=#1239 id=1239 data-nosnippet>1239</a> <span class="kw">let </span>batch_stream = table.scan().build().unwrap().to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1240 id=1240 data-nosnippet>1240</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1241 id=1241 data-nosnippet>1241</a> <span class="macro">assert!</span>(batches.is_empty());
-<a href=#1242 id=1242 data-nosnippet>1242</a> }
-<a href=#1243 id=1243 data-nosnippet>1243</a>
-<a href=#1244 id=1244 data-nosnippet>1244</a> <span class="attr">#[tokio::test]
-<a href=#1245 id=1245 data-nosnippet>1245</a> </span><span class="kw">async fn </span>test_plan_files_no_deletions() {
-<a href=#1246 id=1246 data-nosnippet>1246</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1247 id=1247 data-nosnippet>1247</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#989 id=989 data-nosnippet>989</a> <span class="comment">// writer must be closed to write footer
+<a href=#990 id=990 data-nosnippet>990</a> </span>writer.close().unwrap();
+<a href=#991 id=991 data-nosnippet>991</a> }
+<a href=#992 id=992 data-nosnippet>992</a>
+<a href=#993 id=993 data-nosnippet>993</a> std::fs::metadata(<span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#994 id=994 data-nosnippet>994</a> .unwrap()
+<a href=#995 id=995 data-nosnippet>995</a> .len()
+<a href=#996 id=996 data-nosnippet>996</a> }
+<a href=#997 id=997 data-nosnippet>997</a>
+<a href=#998 id=998 data-nosnippet>998</a> <span class="kw">pub async fn </span>setup_unpartitioned_manifest_files(<span class="kw-2">&mut </span><span class="self">self</span>) {
+<a href=#999 id=999 data-nosnippet>999</a> <span class="kw">let </span>current_snapshot = <span class="self">self</span>.table.metadata().current_snapshot().unwrap();
+<a href=#1000 id=1000 data-nosnippet>1000</a> <span class="kw">let </span>parent_snapshot = current_snapshot
+<a href=#1001 id=1001 data-nosnippet>1001</a> .parent_snapshot(<span class="self">self</span>.table.metadata())
+<a href=#1002 id=1002 data-nosnippet>1002</a> .unwrap();
+<a href=#1003 id=1003 data-nosnippet>1003</a> <span class="kw">let </span>current_schema = current_snapshot.schema(<span class="self">self</span>.table.metadata()).unwrap();
+<a href=#1004 id=1004 data-nosnippet>1004</a> <span class="kw">let </span>current_partition_spec = Arc::new(PartitionSpec::unpartition_spec());
+<a href=#1005 id=1005 data-nosnippet>1005</a>
+<a href=#1006 id=1006 data-nosnippet>1006</a> <span class="comment">// Write the data files first, then use the file size in the manifest entries
+<a href=#1007 id=1007 data-nosnippet>1007</a> </span><span class="kw">let </span>parquet_file_size = <span class="self">self</span>.write_parquet_data_files();
+<a href=#1008 id=1008 data-nosnippet>1008</a>
+<a href=#1009 id=1009 data-nosnippet>1009</a> <span class="comment">// Write data files using an empty partition for unpartitioned tables.
+<a href=#1010 id=1010 data-nosnippet>1010</a> </span><span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
+<a href=#1011 id=1011 data-nosnippet>1011</a> <span class="self">self</span>.next_manifest_file(),
+<a href=#1012 id=1012 data-nosnippet>1012</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
+<a href=#1013 id=1013 data-nosnippet>1013</a> <span class="prelude-val">None</span>,
+<a href=#1014 id=1014 data-nosnippet>1014</a> current_schema.clone(),
+<a href=#1015 id=1015 data-nosnippet>1015</a> current_partition_spec.as_ref().clone(),
+<a href=#1016 id=1016 data-nosnippet>1016</a> )
+<a href=#1017 id=1017 data-nosnippet>1017</a> .build_v2_data();
+<a href=#1018 id=1018 data-nosnippet>1018</a>
+<a href=#1019 id=1019 data-nosnippet>1019</a> <span class="comment">// Create an empty partition value.
+<a href=#1020 id=1020 data-nosnippet>1020</a> </span><span class="kw">let </span>empty_partition = Struct::empty();
+<a href=#1021 id=1021 data-nosnippet>1021</a>
+<a href=#1022 id=1022 data-nosnippet>1022</a> writer
+<a href=#1023 id=1023 data-nosnippet>1023</a> .add_entry(
+<a href=#1024 id=1024 data-nosnippet>1024</a> ManifestEntry::builder()
+<a href=#1025 id=1025 data-nosnippet>1025</a> .status(ManifestStatus::Added)
+<a href=#1026 id=1026 data-nosnippet>1026</a> .data_file(
+<a href=#1027 id=1027 data-nosnippet>1027</a> DataFileBuilder::default()
+<a href=#1028 id=1028 data-nosnippet>1028</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#1029 id=1029 data-nosnippet>1029</a> .content(DataContentType::Data)
+<a href=#1030 id=1030 data-nosnippet>1030</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#1031 id=1031 data-nosnippet>1031</a> .file_format(DataFileFormat::Parquet)
+<a href=#1032 id=1032 data-nosnippet>1032</a> .file_size_in_bytes(parquet_file_size)
+<a href=#1033 id=1033 data-nosnippet>1033</a> .record_count(<span class="number">1</span>)
+<a href=#1034 id=1034 data-nosnippet>1034</a> .partition(empty_partition.clone())
+<a href=#1035 id=1035 data-nosnippet>1035</a> .key_metadata(<span class="prelude-val">None</span>)
+<a href=#1036 id=1036 data-nosnippet>1036</a> .build()
+<a href=#1037 id=1037 data-nosnippet>1037</a> .unwrap(),
+<a href=#1038 id=1038 data-nosnippet>1038</a> )
+<a href=#1039 id=1039 data-nosnippet>1039</a> .build(),
+<a href=#1040 id=1040 data-nosnippet>1040</a> )
+<a href=#1041 id=1041 data-nosnippet>1041</a> .unwrap();
+<a href=#1042 id=1042 data-nosnippet>1042</a>
+<a href=#1043 id=1043 data-nosnippet>1043</a> writer
+<a href=#1044 id=1044 data-nosnippet>1044</a> .add_delete_entry(
+<a href=#1045 id=1045 data-nosnippet>1045</a> ManifestEntry::builder()
+<a href=#1046 id=1046 data-nosnippet>1046</a> .status(ManifestStatus::Deleted)
+<a href=#1047 id=1047 data-nosnippet>1047</a> .snapshot_id(parent_snapshot.snapshot_id())
+<a href=#1048 id=1048 data-nosnippet>1048</a> .sequence_number(parent_snapshot.sequence_number())
+<a href=#1049 id=1049 data-nosnippet>1049</a> .file_sequence_number(parent_snapshot.sequence_number())
+<a href=#1050 id=1050 data-nosnippet>1050</a> .data_file(
+<a href=#1051 id=1051 data-nosnippet>1051</a> DataFileBuilder::default()
+<a href=#1052 id=1052 data-nosnippet>1052</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#1053 id=1053 data-nosnippet>1053</a> .content(DataContentType::Data)
+<a href=#1054 id=1054 data-nosnippet>1054</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/2.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#1055 id=1055 data-nosnippet>1055</a> .file_format(DataFileFormat::Parquet)
+<a href=#1056 id=1056 data-nosnippet>1056</a> .file_size_in_bytes(parquet_file_size)
+<a href=#1057 id=1057 data-nosnippet>1057</a> .record_count(<span class="number">1</span>)
+<a href=#1058 id=1058 data-nosnippet>1058</a> .partition(empty_partition.clone())
+<a href=#1059 id=1059 data-nosnippet>1059</a> .build()
+<a href=#1060 id=1060 data-nosnippet>1060</a> .unwrap(),
+<a href=#1061 id=1061 data-nosnippet>1061</a> )
+<a href=#1062 id=1062 data-nosnippet>1062</a> .build(),
+<a href=#1063 id=1063 data-nosnippet>1063</a> )
+<a href=#1064 id=1064 data-nosnippet>1064</a> .unwrap();
+<a href=#1065 id=1065 data-nosnippet>1065</a>
+<a href=#1066 id=1066 data-nosnippet>1066</a> writer
+<a href=#1067 id=1067 data-nosnippet>1067</a> .add_existing_entry(
+<a href=#1068 id=1068 data-nosnippet>1068</a> ManifestEntry::builder()
+<a href=#1069 id=1069 data-nosnippet>1069</a> .status(ManifestStatus::Existing)
+<a href=#1070 id=1070 data-nosnippet>1070</a> .snapshot_id(parent_snapshot.snapshot_id())
+<a href=#1071 id=1071 data-nosnippet>1071</a> .sequence_number(parent_snapshot.sequence_number())
+<a href=#1072 id=1072 data-nosnippet>1072</a> .file_sequence_number(parent_snapshot.sequence_number())
+<a href=#1073 id=1073 data-nosnippet>1073</a> .data_file(
+<a href=#1074 id=1074 data-nosnippet>1074</a> DataFileBuilder::default()
+<a href=#1075 id=1075 data-nosnippet>1075</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#1076 id=1076 data-nosnippet>1076</a> .content(DataContentType::Data)
+<a href=#1077 id=1077 data-nosnippet>1077</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/3.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#1078 id=1078 data-nosnippet>1078</a> .file_format(DataFileFormat::Parquet)
+<a href=#1079 id=1079 data-nosnippet>1079</a> .file_size_in_bytes(parquet_file_size)
+<a href=#1080 id=1080 data-nosnippet>1080</a> .record_count(<span class="number">1</span>)
+<a href=#1081 id=1081 data-nosnippet>1081</a> .partition(empty_partition.clone())
+<a href=#1082 id=1082 data-nosnippet>1082</a> .build()
+<a href=#1083 id=1083 data-nosnippet>1083</a> .unwrap(),
+<a href=#1084 id=1084 data-nosnippet>1084</a> )
+<a href=#1085 id=1085 data-nosnippet>1085</a> .build(),
+<a href=#1086 id=1086 data-nosnippet>1086</a> )
+<a href=#1087 id=1087 data-nosnippet>1087</a> .unwrap();
+<a href=#1088 id=1088 data-nosnippet>1088</a>
+<a href=#1089 id=1089 data-nosnippet>1089</a> <span class="kw">let </span>data_file_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
+<a href=#1090 id=1090 data-nosnippet>1090</a>
+<a href=#1091 id=1091 data-nosnippet>1091</a> <span class="comment">// Write to manifest list
+<a href=#1092 id=1092 data-nosnippet>1092</a> </span><span class="kw">let </span><span class="kw-2">mut </span>manifest_list_write = ManifestListWriter::v2(
+<a href=#1093 id=1093 data-nosnippet>1093</a> <span class="self">self</span>.table
+<a href=#1094 id=1094 data-nosnippet>1094</a> .file_io()
+<a href=#1095 id=1095 data-nosnippet>1095</a> .new_output(current_snapshot.manifest_list())
+<a href=#1096 id=1096 data-nosnippet>1096</a> .unwrap(),
+<a href=#1097 id=1097 data-nosnippet>1097</a> current_snapshot.snapshot_id(),
+<a href=#1098 id=1098 data-nosnippet>1098</a> current_snapshot.parent_snapshot_id(),
+<a href=#1099 id=1099 data-nosnippet>1099</a> current_snapshot.sequence_number(),
+<a href=#1100 id=1100 data-nosnippet>1100</a> );
+<a href=#1101 id=1101 data-nosnippet>1101</a> manifest_list_write
+<a href=#1102 id=1102 data-nosnippet>1102</a> .add_manifests(<span class="macro">vec!</span>[data_file_manifest].into_iter())
+<a href=#1103 id=1103 data-nosnippet>1103</a> .unwrap();
+<a href=#1104 id=1104 data-nosnippet>1104</a> manifest_list_write.close().<span class="kw">await</span>.unwrap();
+<a href=#1105 id=1105 data-nosnippet>1105</a> }
+<a href=#1106 id=1106 data-nosnippet>1106</a>
+<a href=#1107 id=1107 data-nosnippet>1107</a> <span class="kw">pub async fn </span>setup_deadlock_manifests(<span class="kw-2">&mut </span><span class="self">self</span>) {
+<a href=#1108 id=1108 data-nosnippet>1108</a> <span class="kw">let </span>current_snapshot = <span class="self">self</span>.table.metadata().current_snapshot().unwrap();
+<a href=#1109 id=1109 data-nosnippet>1109</a> <span class="kw">let </span>_parent_snapshot = current_snapshot
+<a href=#1110 id=1110 data-nosnippet>1110</a> .parent_snapshot(<span class="self">self</span>.table.metadata())
+<a href=#1111 id=1111 data-nosnippet>1111</a> .unwrap();
+<a href=#1112 id=1112 data-nosnippet>1112</a> <span class="kw">let </span>current_schema = current_snapshot.schema(<span class="self">self</span>.table.metadata()).unwrap();
+<a href=#1113 id=1113 data-nosnippet>1113</a> <span class="kw">let </span>current_partition_spec = <span class="self">self</span>.table.metadata().default_partition_spec();
+<a href=#1114 id=1114 data-nosnippet>1114</a>
+<a href=#1115 id=1115 data-nosnippet>1115</a> <span class="comment">// 1. Write DATA manifest with MULTIPLE entries to fill buffer
+<a href=#1116 id=1116 data-nosnippet>1116</a> </span><span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
+<a href=#1117 id=1117 data-nosnippet>1117</a> <span class="self">self</span>.next_manifest_file(),
+<a href=#1118 id=1118 data-nosnippet>1118</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
+<a href=#1119 id=1119 data-nosnippet>1119</a> <span class="prelude-val">None</span>,
+<a href=#1120 id=1120 data-nosnippet>1120</a> current_schema.clone(),
+<a href=#1121 id=1121 data-nosnippet>1121</a> current_partition_spec.as_ref().clone(),
+<a href=#1122 id=1122 data-nosnippet>1122</a> )
+<a href=#1123 id=1123 data-nosnippet>1123</a> .build_v2_data();
+<a href=#1124 id=1124 data-nosnippet>1124</a>
+<a href=#1125 id=1125 data-nosnippet>1125</a> <span class="comment">// Add 10 data entries
+<a href=#1126 id=1126 data-nosnippet>1126</a> </span><span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..<span class="number">10 </span>{
+<a href=#1127 id=1127 data-nosnippet>1127</a> writer
+<a href=#1128 id=1128 data-nosnippet>1128</a> .add_entry(
+<a href=#1129 id=1129 data-nosnippet>1129</a> ManifestEntry::builder()
+<a href=#1130 id=1130 data-nosnippet>1130</a> .status(ManifestStatus::Added)
+<a href=#1131 id=1131 data-nosnippet>1131</a> .data_file(
+<a href=#1132 id=1132 data-nosnippet>1132</a> DataFileBuilder::default()
+<a href=#1133 id=1133 data-nosnippet>1133</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#1134 id=1134 data-nosnippet>1134</a> .content(DataContentType::Data)
+<a href=#1135 id=1135 data-nosnippet>1135</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/{}.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location, i))
+<a href=#1136 id=1136 data-nosnippet>1136</a> .file_format(DataFileFormat::Parquet)
+<a href=#1137 id=1137 data-nosnippet>1137</a> .file_size_in_bytes(<span class="number">100</span>)
+<a href=#1138 id=1138 data-nosnippet>1138</a> .record_count(<span class="number">1</span>)
+<a href=#1139 id=1139 data-nosnippet>1139</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">100</span>))]))
+<a href=#1140 id=1140 data-nosnippet>1140</a> .key_metadata(<span class="prelude-val">None</span>)
+<a href=#1141 id=1141 data-nosnippet>1141</a> .build()
+<a href=#1142 id=1142 data-nosnippet>1142</a> .unwrap(),
+<a href=#1143 id=1143 data-nosnippet>1143</a> )
+<a href=#1144 id=1144 data-nosnippet>1144</a> .build(),
+<a href=#1145 id=1145 data-nosnippet>1145</a> )
+<a href=#1146 id=1146 data-nosnippet>1146</a> .unwrap();
+<a href=#1147 id=1147 data-nosnippet>1147</a> }
+<a href=#1148 id=1148 data-nosnippet>1148</a> <span class="kw">let </span>data_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
+<a href=#1149 id=1149 data-nosnippet>1149</a>
+<a href=#1150 id=1150 data-nosnippet>1150</a> <span class="comment">// 2. Write DELETE manifest
+<a href=#1151 id=1151 data-nosnippet>1151</a> </span><span class="kw">let </span><span class="kw-2">mut </span>writer = ManifestWriterBuilder::new(
+<a href=#1152 id=1152 data-nosnippet>1152</a> <span class="self">self</span>.next_manifest_file(),
+<a href=#1153 id=1153 data-nosnippet>1153</a> <span class="prelude-val">Some</span>(current_snapshot.snapshot_id()),
+<a href=#1154 id=1154 data-nosnippet>1154</a> <span class="prelude-val">None</span>,
+<a href=#1155 id=1155 data-nosnippet>1155</a> current_schema.clone(),
+<a href=#1156 id=1156 data-nosnippet>1156</a> current_partition_spec.as_ref().clone(),
+<a href=#1157 id=1157 data-nosnippet>1157</a> )
+<a href=#1158 id=1158 data-nosnippet>1158</a> .build_v2_deletes();
+<a href=#1159 id=1159 data-nosnippet>1159</a>
+<a href=#1160 id=1160 data-nosnippet>1160</a> writer
+<a href=#1161 id=1161 data-nosnippet>1161</a> .add_entry(
+<a href=#1162 id=1162 data-nosnippet>1162</a> ManifestEntry::builder()
+<a href=#1163 id=1163 data-nosnippet>1163</a> .status(ManifestStatus::Added)
+<a href=#1164 id=1164 data-nosnippet>1164</a> .data_file(
+<a href=#1165 id=1165 data-nosnippet>1165</a> DataFileBuilder::default()
+<a href=#1166 id=1166 data-nosnippet>1166</a> .partition_spec_id(<span class="number">0</span>)
+<a href=#1167 id=1167 data-nosnippet>1167</a> .content(DataContentType::PositionDeletes)
+<a href=#1168 id=1168 data-nosnippet>1168</a> .file_path(<span class="macro">format!</span>(<span class="string">"{}/del.parquet"</span>, <span class="kw-2">&</span><span class="self">self</span>.table_location))
+<a href=#1169 id=1169 data-nosnippet>1169</a> .file_format(DataFileFormat::Parquet)
+<a href=#1170 id=1170 data-nosnippet>1170</a> .file_size_in_bytes(<span class="number">100</span>)
+<a href=#1171 id=1171 data-nosnippet>1171</a> .record_count(<span class="number">1</span>)
+<a href=#1172 id=1172 data-nosnippet>1172</a> .partition(Struct::from_iter([<span class="prelude-val">Some</span>(Literal::long(<span class="number">100</span>))]))
+<a href=#1173 id=1173 data-nosnippet>1173</a> .build()
+<a href=#1174 id=1174 data-nosnippet>1174</a> .unwrap(),
+<a href=#1175 id=1175 data-nosnippet>1175</a> )
+<a href=#1176 id=1176 data-nosnippet>1176</a> .build(),
+<a href=#1177 id=1177 data-nosnippet>1177</a> )
+<a href=#1178 id=1178 data-nosnippet>1178</a> .unwrap();
+<a href=#1179 id=1179 data-nosnippet>1179</a> <span class="kw">let </span>delete_manifest = writer.write_manifest_file().<span class="kw">await</span>.unwrap();
+<a href=#1180 id=1180 data-nosnippet>1180</a>
+<a href=#1181 id=1181 data-nosnippet>1181</a> <span class="comment">// Write to manifest list - DATA FIRST then DELETE
+<a href=#1182 id=1182 data-nosnippet>1182</a> // This order is crucial for reproduction
+<a href=#1183 id=1183 data-nosnippet>1183</a> </span><span class="kw">let </span><span class="kw-2">mut </span>manifest_list_write = ManifestListWriter::v2(
+<a href=#1184 id=1184 data-nosnippet>1184</a> <span class="self">self</span>.table
+<a href=#1185 id=1185 data-nosnippet>1185</a> .file_io()
+<a href=#1186 id=1186 data-nosnippet>1186</a> .new_output(current_snapshot.manifest_list())
+<a href=#1187 id=1187 data-nosnippet>1187</a> .unwrap(),
+<a href=#1188 id=1188 data-nosnippet>1188</a> current_snapshot.snapshot_id(),
+<a href=#1189 id=1189 data-nosnippet>1189</a> current_snapshot.parent_snapshot_id(),
+<a href=#1190 id=1190 data-nosnippet>1190</a> current_snapshot.sequence_number(),
+<a href=#1191 id=1191 data-nosnippet>1191</a> );
+<a href=#1192 id=1192 data-nosnippet>1192</a> manifest_list_write
+<a href=#1193 id=1193 data-nosnippet>1193</a> .add_manifests(<span class="macro">vec!</span>[data_manifest, delete_manifest].into_iter())
+<a href=#1194 id=1194 data-nosnippet>1194</a> .unwrap();
+<a href=#1195 id=1195 data-nosnippet>1195</a> manifest_list_write.close().<span class="kw">await</span>.unwrap();
+<a href=#1196 id=1196 data-nosnippet>1196</a> }
+<a href=#1197 id=1197 data-nosnippet>1197</a> }
+<a href=#1198 id=1198 data-nosnippet>1198</a>
+<a href=#1199 id=1199 data-nosnippet>1199</a> <span class="attr">#[test]
+<a href=#1200 id=1200 data-nosnippet>1200</a> </span><span class="kw">fn </span>test_table_scan_columns() {
+<a href=#1201 id=1201 data-nosnippet>1201</a> <span class="kw">let </span>table = TableTestFixture::new().table;
+<a href=#1202 id=1202 data-nosnippet>1202</a>
+<a href=#1203 id=1203 data-nosnippet>1203</a> <span class="kw">let </span>table_scan = table.scan().select([<span class="string">"x"</span>, <span class="string">"y"</span>]).build().unwrap();
+<a href=#1204 id=1204 data-nosnippet>1204</a> <span class="macro">assert_eq!</span>(
+<a href=#1205 id=1205 data-nosnippet>1205</a> <span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="string">"x"</span>.to_string(), <span class="string">"y"</span>.to_string()]),
+<a href=#1206 id=1206 data-nosnippet>1206</a> table_scan.column_names
+<a href=#1207 id=1207 data-nosnippet>1207</a> );
+<a href=#1208 id=1208 data-nosnippet>1208</a>
+<a href=#1209 id=1209 data-nosnippet>1209</a> <span class="kw">let </span>table_scan = table
+<a href=#1210 id=1210 data-nosnippet>1210</a> .scan()
+<a href=#1211 id=1211 data-nosnippet>1211</a> .select([<span class="string">"x"</span>, <span class="string">"y"</span>])
+<a href=#1212 id=1212 data-nosnippet>1212</a> .select([<span class="string">"z"</span>])
+<a href=#1213 id=1213 data-nosnippet>1213</a> .build()
+<a href=#1214 id=1214 data-nosnippet>1214</a> .unwrap();
+<a href=#1215 id=1215 data-nosnippet>1215</a> <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="macro">vec!</span>[<span class="string">"z"</span>.to_string()]), table_scan.column_names);
+<a href=#1216 id=1216 data-nosnippet>1216</a> }
+<a href=#1217 id=1217 data-nosnippet>1217</a>
+<a href=#1218 id=1218 data-nosnippet>1218</a> <span class="attr">#[test]
+<a href=#1219 id=1219 data-nosnippet>1219</a> </span><span class="kw">fn </span>test_select_all() {
+<a href=#1220 id=1220 data-nosnippet>1220</a> <span class="kw">let </span>table = TableTestFixture::new().table;
+<a href=#1221 id=1221 data-nosnippet>1221</a>
+<a href=#1222 id=1222 data-nosnippet>1222</a> <span class="kw">let </span>table_scan = table.scan().select_all().build().unwrap();
+<a href=#1223 id=1223 data-nosnippet>1223</a> <span class="macro">assert!</span>(table_scan.column_names.is_none());
+<a href=#1224 id=1224 data-nosnippet>1224</a> }
+<a href=#1225 id=1225 data-nosnippet>1225</a>
+<a href=#1226 id=1226 data-nosnippet>1226</a> <span class="attr">#[test]
+<a href=#1227 id=1227 data-nosnippet>1227</a> </span><span class="kw">fn </span>test_select_no_exist_column() {
+<a href=#1228 id=1228 data-nosnippet>1228</a> <span class="kw">let </span>table = TableTestFixture::new().table;
+<a href=#1229 id=1229 data-nosnippet>1229</a>
+<a href=#1230 id=1230 data-nosnippet>1230</a> <span class="kw">let </span>table_scan = table.scan().select([<span class="string">"x"</span>, <span class="string">"y"</span>, <span class="string">"z"</span>, <span class="string">"a"</span>, <span class="string">"b"</span>]).build();
+<a href=#1231 id=1231 data-nosnippet>1231</a> <span class="macro">assert!</span>(table_scan.is_err());
+<a href=#1232 id=1232 data-nosnippet>1232</a> }
+<a href=#1233 id=1233 data-nosnippet>1233</a>
+<a href=#1234 id=1234 data-nosnippet>1234</a> <span class="attr">#[test]
+<a href=#1235 id=1235 data-nosnippet>1235</a> </span><span class="kw">fn </span>test_table_scan_default_snapshot_id() {
+<a href=#1236 id=1236 data-nosnippet>1236</a> <span class="kw">let </span>table = TableTestFixture::new().table;
+<a href=#1237 id=1237 data-nosnippet>1237</a>
+<a href=#1238 id=1238 data-nosnippet>1238</a> <span class="kw">let </span>table_scan = table.scan().build().unwrap();
+<a href=#1239 id=1239 data-nosnippet>1239</a> <span class="macro">assert_eq!</span>(
+<a href=#1240 id=1240 data-nosnippet>1240</a> table.metadata().current_snapshot().unwrap().snapshot_id(),
+<a href=#1241 id=1241 data-nosnippet>1241</a> table_scan.snapshot().unwrap().snapshot_id()
+<a href=#1242 id=1242 data-nosnippet>1242</a> );
+<a href=#1243 id=1243 data-nosnippet>1243</a> }
+<a href=#1244 id=1244 data-nosnippet>1244</a>
+<a href=#1245 id=1245 data-nosnippet>1245</a> <span class="attr">#[test]
+<a href=#1246 id=1246 data-nosnippet>1246</a> </span><span class="kw">fn </span>test_table_scan_non_exist_snapshot_id() {
+<a href=#1247 id=1247 data-nosnippet>1247</a> <span class="kw">let </span>table = TableTestFixture::new().table;
<a href=#1248 id=1248 data-nosnippet>1248</a>
-<a href=#1249 id=1249 data-nosnippet>1249</a> <span class="comment">// Create table scan for current snapshot and plan files
-<a href=#1250 id=1250 data-nosnippet>1250</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1251 id=1251 data-nosnippet>1251</a> .table
-<a href=#1252 id=1252 data-nosnippet>1252</a> .scan()
-<a href=#1253 id=1253 data-nosnippet>1253</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1254 id=1254 data-nosnippet>1254</a> .build()
-<a href=#1255 id=1255 data-nosnippet>1255</a> .unwrap();
+<a href=#1249 id=1249 data-nosnippet>1249</a> <span class="kw">let </span>table_scan = table.scan().snapshot_id(<span class="number">1024</span>).build();
+<a href=#1250 id=1250 data-nosnippet>1250</a> <span class="macro">assert!</span>(table_scan.is_err());
+<a href=#1251 id=1251 data-nosnippet>1251</a> }
+<a href=#1252 id=1252 data-nosnippet>1252</a>
+<a href=#1253 id=1253 data-nosnippet>1253</a> <span class="attr">#[test]
+<a href=#1254 id=1254 data-nosnippet>1254</a> </span><span class="kw">fn </span>test_table_scan_with_snapshot_id() {
+<a href=#1255 id=1255 data-nosnippet>1255</a> <span class="kw">let </span>table = TableTestFixture::new().table;
<a href=#1256 id=1256 data-nosnippet>1256</a>
-<a href=#1257 id=1257 data-nosnippet>1257</a> <span class="kw">let </span><span class="kw-2">mut </span>tasks = table_scan
-<a href=#1258 id=1258 data-nosnippet>1258</a> .plan_files()
-<a href=#1259 id=1259 data-nosnippet>1259</a> .<span class="kw">await
-<a href=#1260 id=1260 data-nosnippet>1260</a> </span>.unwrap()
-<a href=#1261 id=1261 data-nosnippet>1261</a> .try_fold(<span class="macro">vec!</span>[], |<span class="kw-2">mut </span>acc, task| <span class="kw">async move </span>{
-<a href=#1262 id=1262 data-nosnippet>1262</a> acc.push(task);
-<a href=#1263 id=1263 data-nosnippet>1263</a> <span class="prelude-val">Ok</span>(acc)
-<a href=#1264 id=1264 data-nosnippet>1264</a> })
-<a href=#1265 id=1265 data-nosnippet>1265</a> .<span class="kw">await
-<a href=#1266 id=1266 data-nosnippet>1266</a> </span>.unwrap();
-<a href=#1267 id=1267 data-nosnippet>1267</a>
-<a href=#1268 id=1268 data-nosnippet>1268</a> <span class="macro">assert_eq!</span>(tasks.len(), <span class="number">2</span>);
-<a href=#1269 id=1269 data-nosnippet>1269</a>
-<a href=#1270 id=1270 data-nosnippet>1270</a> tasks.sort_by_key(|t| t.data_file_path.to_string());
-<a href=#1271 id=1271 data-nosnippet>1271</a>
-<a href=#1272 id=1272 data-nosnippet>1272</a> <span class="comment">// Check first task is added data file
-<a href=#1273 id=1273 data-nosnippet>1273</a> </span><span class="macro">assert_eq!</span>(
-<a href=#1274 id=1274 data-nosnippet>1274</a> tasks[<span class="number">0</span>].data_file_path,
-<a href=#1275 id=1275 data-nosnippet>1275</a> <span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span>fixture.table_location)
-<a href=#1276 id=1276 data-nosnippet>1276</a> );
-<a href=#1277 id=1277 data-nosnippet>1277</a>
-<a href=#1278 id=1278 data-nosnippet>1278</a> <span class="comment">// Check second task is existing data file
-<a href=#1279 id=1279 data-nosnippet>1279</a> </span><span class="macro">assert_eq!</span>(
-<a href=#1280 id=1280 data-nosnippet>1280</a> tasks[<span class="number">1</span>].data_file_path,
-<a href=#1281 id=1281 data-nosnippet>1281</a> <span class="macro">format!</span>(<span class="string">"{}/3.parquet"</span>, <span class="kw-2">&</span>fixture.table_location)
-<a href=#1282 id=1282 data-nosnippet>1282</a> );
-<a href=#1283 id=1283 data-nosnippet>1283</a> }
-<a href=#1284 id=1284 data-nosnippet>1284</a>
-<a href=#1285 id=1285 data-nosnippet>1285</a> <span class="attr">#[tokio::test]
-<a href=#1286 id=1286 data-nosnippet>1286</a> </span><span class="kw">async fn </span>test_open_parquet_no_deletions() {
-<a href=#1287 id=1287 data-nosnippet>1287</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1288 id=1288 data-nosnippet>1288</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1257 id=1257 data-nosnippet>1257</a> <span class="kw">let </span>table_scan = table
+<a href=#1258 id=1258 data-nosnippet>1258</a> .scan()
+<a href=#1259 id=1259 data-nosnippet>1259</a> .snapshot_id(<span class="number">3051729675574597004</span>)
+<a href=#1260 id=1260 data-nosnippet>1260</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1261 id=1261 data-nosnippet>1261</a> .build()
+<a href=#1262 id=1262 data-nosnippet>1262</a> .unwrap();
+<a href=#1263 id=1263 data-nosnippet>1263</a> <span class="macro">assert_eq!</span>(
+<a href=#1264 id=1264 data-nosnippet>1264</a> table_scan.snapshot().unwrap().snapshot_id(),
+<a href=#1265 id=1265 data-nosnippet>1265</a> <span class="number">3051729675574597004
+<a href=#1266 id=1266 data-nosnippet>1266</a> </span>);
+<a href=#1267 id=1267 data-nosnippet>1267</a> }
+<a href=#1268 id=1268 data-nosnippet>1268</a>
+<a href=#1269 id=1269 data-nosnippet>1269</a> <span class="attr">#[tokio::test]
+<a href=#1270 id=1270 data-nosnippet>1270</a> </span><span class="kw">async fn </span>test_plan_files_on_table_without_any_snapshots() {
+<a href=#1271 id=1271 data-nosnippet>1271</a> <span class="kw">let </span>table = TableTestFixture::new_empty().table;
+<a href=#1272 id=1272 data-nosnippet>1272</a> <span class="kw">let </span>batch_stream = table.scan().build().unwrap().to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1273 id=1273 data-nosnippet>1273</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1274 id=1274 data-nosnippet>1274</a> <span class="macro">assert!</span>(batches.is_empty());
+<a href=#1275 id=1275 data-nosnippet>1275</a> }
+<a href=#1276 id=1276 data-nosnippet>1276</a>
+<a href=#1277 id=1277 data-nosnippet>1277</a> <span class="attr">#[tokio::test]
+<a href=#1278 id=1278 data-nosnippet>1278</a> </span><span class="kw">async fn </span>test_plan_files_no_deletions() {
+<a href=#1279 id=1279 data-nosnippet>1279</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1280 id=1280 data-nosnippet>1280</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1281 id=1281 data-nosnippet>1281</a>
+<a href=#1282 id=1282 data-nosnippet>1282</a> <span class="comment">// Create table scan for current snapshot and plan files
+<a href=#1283 id=1283 data-nosnippet>1283</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1284 id=1284 data-nosnippet>1284</a> .table
+<a href=#1285 id=1285 data-nosnippet>1285</a> .scan()
+<a href=#1286 id=1286 data-nosnippet>1286</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1287 id=1287 data-nosnippet>1287</a> .build()
+<a href=#1288 id=1288 data-nosnippet>1288</a> .unwrap();
<a href=#1289 id=1289 data-nosnippet>1289</a>
-<a href=#1290 id=1290 data-nosnippet>1290</a> <span class="comment">// Create table scan for current snapshot and plan files
-<a href=#1291 id=1291 data-nosnippet>1291</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1292 id=1292 data-nosnippet>1292</a> .table
-<a href=#1293 id=1293 data-nosnippet>1293</a> .scan()
-<a href=#1294 id=1294 data-nosnippet>1294</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1295 id=1295 data-nosnippet>1295</a> .build()
-<a href=#1296 id=1296 data-nosnippet>1296</a> .unwrap();
-<a href=#1297 id=1297 data-nosnippet>1297</a>
-<a href=#1298 id=1298 data-nosnippet>1298</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1299 id=1299 data-nosnippet>1299</a>
-<a href=#1300 id=1300 data-nosnippet>1300</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1301 id=1301 data-nosnippet>1301</a>
-<a href=#1302 id=1302 data-nosnippet>1302</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1303 id=1303 data-nosnippet>1303</a>
-<a href=#1304 id=1304 data-nosnippet>1304</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1305 id=1305 data-nosnippet>1305</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
-<a href=#1306 id=1306 data-nosnippet>1306</a> }
-<a href=#1307 id=1307 data-nosnippet>1307</a>
-<a href=#1308 id=1308 data-nosnippet>1308</a> <span class="attr">#[tokio::test]
-<a href=#1309 id=1309 data-nosnippet>1309</a> </span><span class="kw">async fn </span>test_open_parquet_no_deletions_by_separate_reader() {
-<a href=#1310 id=1310 data-nosnippet>1310</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1311 id=1311 data-nosnippet>1311</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1312 id=1312 data-nosnippet>1312</a>
-<a href=#1313 id=1313 data-nosnippet>1313</a> <span class="comment">// Create table scan for current snapshot and plan files
-<a href=#1314 id=1314 data-nosnippet>1314</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1315 id=1315 data-nosnippet>1315</a> .table
-<a href=#1316 id=1316 data-nosnippet>1316</a> .scan()
-<a href=#1317 id=1317 data-nosnippet>1317</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1318 id=1318 data-nosnippet>1318</a> .build()
-<a href=#1319 id=1319 data-nosnippet>1319</a> .unwrap();
-<a href=#1320 id=1320 data-nosnippet>1320</a>
-<a href=#1321 id=1321 data-nosnippet>1321</a> <span class="kw">let </span><span class="kw-2">mut </span>plan_task: Vec<<span class="kw">_</span>> = table_scan
-<a href=#1322 id=1322 data-nosnippet>1322</a> .plan_files()
-<a href=#1323 id=1323 data-nosnippet>1323</a> .<span class="kw">await
-<a href=#1324 id=1324 data-nosnippet>1324</a> </span>.unwrap()
-<a href=#1325 id=1325 data-nosnippet>1325</a> .try_collect()
-<a href=#1326 id=1326 data-nosnippet>1326</a> .<span class="kw">await
-<a href=#1327 id=1327 data-nosnippet>1327</a> </span>.unwrap();
-<a href=#1328 id=1328 data-nosnippet>1328</a> <span class="macro">assert_eq!</span>(plan_task.len(), <span class="number">2</span>);
-<a href=#1329 id=1329 data-nosnippet>1329</a>
-<a href=#1330 id=1330 data-nosnippet>1330</a> <span class="kw">let </span>reader = ArrowReaderBuilder::new(fixture.table.file_io().clone()).build();
-<a href=#1331 id=1331 data-nosnippet>1331</a> <span class="kw">let </span>batch_stream = reader
-<a href=#1332 id=1332 data-nosnippet>1332</a> .clone()
-<a href=#1333 id=1333 data-nosnippet>1333</a> .read(Box::pin(stream::iter(<span class="macro">vec!</span>[<span class="prelude-val">Ok</span>(plan_task.remove(<span class="number">0</span>))])))
-<a href=#1334 id=1334 data-nosnippet>1334</a> .unwrap();
-<a href=#1335 id=1335 data-nosnippet>1335</a> <span class="kw">let </span>batch_1: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1290 id=1290 data-nosnippet>1290</a> <span class="kw">let </span><span class="kw-2">mut </span>tasks = table_scan
+<a href=#1291 id=1291 data-nosnippet>1291</a> .plan_files()
+<a href=#1292 id=1292 data-nosnippet>1292</a> .<span class="kw">await
+<a href=#1293 id=1293 data-nosnippet>1293</a> </span>.unwrap()
+<a href=#1294 id=1294 data-nosnippet>1294</a> .try_fold(<span class="macro">vec!</span>[], |<span class="kw-2">mut </span>acc, task| <span class="kw">async move </span>{
+<a href=#1295 id=1295 data-nosnippet>1295</a> acc.push(task);
+<a href=#1296 id=1296 data-nosnippet>1296</a> <span class="prelude-val">Ok</span>(acc)
+<a href=#1297 id=1297 data-nosnippet>1297</a> })
+<a href=#1298 id=1298 data-nosnippet>1298</a> .<span class="kw">await
+<a href=#1299 id=1299 data-nosnippet>1299</a> </span>.unwrap();
+<a href=#1300 id=1300 data-nosnippet>1300</a>
+<a href=#1301 id=1301 data-nosnippet>1301</a> <span class="macro">assert_eq!</span>(tasks.len(), <span class="number">2</span>);
+<a href=#1302 id=1302 data-nosnippet>1302</a>
+<a href=#1303 id=1303 data-nosnippet>1303</a> tasks.sort_by_key(|t| t.data_file_path.to_string());
+<a href=#1304 id=1304 data-nosnippet>1304</a>
+<a href=#1305 id=1305 data-nosnippet>1305</a> <span class="comment">// Check first task is added data file
+<a href=#1306 id=1306 data-nosnippet>1306</a> </span><span class="macro">assert_eq!</span>(
+<a href=#1307 id=1307 data-nosnippet>1307</a> tasks[<span class="number">0</span>].data_file_path,
+<a href=#1308 id=1308 data-nosnippet>1308</a> <span class="macro">format!</span>(<span class="string">"{}/1.parquet"</span>, <span class="kw-2">&</span>fixture.table_location)
+<a href=#1309 id=1309 data-nosnippet>1309</a> );
+<a href=#1310 id=1310 data-nosnippet>1310</a>
+<a href=#1311 id=1311 data-nosnippet>1311</a> <span class="comment">// Check second task is existing data file
+<a href=#1312 id=1312 data-nosnippet>1312</a> </span><span class="macro">assert_eq!</span>(
+<a href=#1313 id=1313 data-nosnippet>1313</a> tasks[<span class="number">1</span>].data_file_path,
+<a href=#1314 id=1314 data-nosnippet>1314</a> <span class="macro">format!</span>(<span class="string">"{}/3.parquet"</span>, <span class="kw-2">&</span>fixture.table_location)
+<a href=#1315 id=1315 data-nosnippet>1315</a> );
+<a href=#1316 id=1316 data-nosnippet>1316</a> }
+<a href=#1317 id=1317 data-nosnippet>1317</a>
+<a href=#1318 id=1318 data-nosnippet>1318</a> <span class="attr">#[tokio::test]
+<a href=#1319 id=1319 data-nosnippet>1319</a> </span><span class="kw">async fn </span>test_open_parquet_no_deletions() {
+<a href=#1320 id=1320 data-nosnippet>1320</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1321 id=1321 data-nosnippet>1321</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1322 id=1322 data-nosnippet>1322</a>
+<a href=#1323 id=1323 data-nosnippet>1323</a> <span class="comment">// Create table scan for current snapshot and plan files
+<a href=#1324 id=1324 data-nosnippet>1324</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1325 id=1325 data-nosnippet>1325</a> .table
+<a href=#1326 id=1326 data-nosnippet>1326</a> .scan()
+<a href=#1327 id=1327 data-nosnippet>1327</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1328 id=1328 data-nosnippet>1328</a> .build()
+<a href=#1329 id=1329 data-nosnippet>1329</a> .unwrap();
+<a href=#1330 id=1330 data-nosnippet>1330</a>
+<a href=#1331 id=1331 data-nosnippet>1331</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1332 id=1332 data-nosnippet>1332</a>
+<a href=#1333 id=1333 data-nosnippet>1333</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1334 id=1334 data-nosnippet>1334</a>
+<a href=#1335 id=1335 data-nosnippet>1335</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
<a href=#1336 id=1336 data-nosnippet>1336</a>
-<a href=#1337 id=1337 data-nosnippet>1337</a> <span class="kw">let </span>reader = ArrowReaderBuilder::new(fixture.table.file_io().clone()).build();
-<a href=#1338 id=1338 data-nosnippet>1338</a> <span class="kw">let </span>batch_stream = reader
-<a href=#1339 id=1339 data-nosnippet>1339</a> .read(Box::pin(stream::iter(<span class="macro">vec!</span>[<span class="prelude-val">Ok</span>(plan_task.remove(<span class="number">0</span>))])))
-<a href=#1340 id=1340 data-nosnippet>1340</a> .unwrap();
-<a href=#1341 id=1341 data-nosnippet>1341</a> <span class="kw">let </span>batch_2: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1342 id=1342 data-nosnippet>1342</a>
-<a href=#1343 id=1343 data-nosnippet>1343</a> <span class="macro">assert_eq!</span>(batch_1, batch_2);
-<a href=#1344 id=1344 data-nosnippet>1344</a> }
+<a href=#1337 id=1337 data-nosnippet>1337</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1338 id=1338 data-nosnippet>1338</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
+<a href=#1339 id=1339 data-nosnippet>1339</a> }
+<a href=#1340 id=1340 data-nosnippet>1340</a>
+<a href=#1341 id=1341 data-nosnippet>1341</a> <span class="attr">#[tokio::test]
+<a href=#1342 id=1342 data-nosnippet>1342</a> </span><span class="kw">async fn </span>test_open_parquet_no_deletions_by_separate_reader() {
+<a href=#1343 id=1343 data-nosnippet>1343</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1344 id=1344 data-nosnippet>1344</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1345 id=1345 data-nosnippet>1345</a>
-<a href=#1346 id=1346 data-nosnippet>1346</a> <span class="attr">#[tokio::test]
-<a href=#1347 id=1347 data-nosnippet>1347</a> </span><span class="kw">async fn </span>test_open_parquet_with_projection() {
-<a href=#1348 id=1348 data-nosnippet>1348</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1349 id=1349 data-nosnippet>1349</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1350 id=1350 data-nosnippet>1350</a>
-<a href=#1351 id=1351 data-nosnippet>1351</a> <span class="comment">// Create table scan for current snapshot and plan files
-<a href=#1352 id=1352 data-nosnippet>1352</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1353 id=1353 data-nosnippet>1353</a> .table
-<a href=#1354 id=1354 data-nosnippet>1354</a> .scan()
-<a href=#1355 id=1355 data-nosnippet>1355</a> .select([<span class="string">"x"</span>, <span class="string">"z"</span>])
-<a href=#1356 id=1356 data-nosnippet>1356</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1357 id=1357 data-nosnippet>1357</a> .build()
-<a href=#1358 id=1358 data-nosnippet>1358</a> .unwrap();
-<a href=#1359 id=1359 data-nosnippet>1359</a>
-<a href=#1360 id=1360 data-nosnippet>1360</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1361 id=1361 data-nosnippet>1361</a>
-<a href=#1362 id=1362 data-nosnippet>1362</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1363 id=1363 data-nosnippet>1363</a>
-<a href=#1364 id=1364 data-nosnippet>1364</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">2</span>);
-<a href=#1365 id=1365 data-nosnippet>1365</a>
-<a href=#1366 id=1366 data-nosnippet>1366</a> <span class="kw">let </span>col1 = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1367 id=1367 data-nosnippet>1367</a> <span class="kw">let </span>int64_arr = col1.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1368 id=1368 data-nosnippet>1368</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
+<a href=#1346 id=1346 data-nosnippet>1346</a> <span class="comment">// Create table scan for current snapshot and plan files
+<a href=#1347 id=1347 data-nosnippet>1347</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1348 id=1348 data-nosnippet>1348</a> .table
+<a href=#1349 id=1349 data-nosnippet>1349</a> .scan()
+<a href=#1350 id=1350 data-nosnippet>1350</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1351 id=1351 data-nosnippet>1351</a> .build()
+<a href=#1352 id=1352 data-nosnippet>1352</a> .unwrap();
+<a href=#1353 id=1353 data-nosnippet>1353</a>
+<a href=#1354 id=1354 data-nosnippet>1354</a> <span class="kw">let </span><span class="kw-2">mut </span>plan_task: Vec<<span class="kw">_</span>> = table_scan
+<a href=#1355 id=1355 data-nosnippet>1355</a> .plan_files()
+<a href=#1356 id=1356 data-nosnippet>1356</a> .<span class="kw">await
+<a href=#1357 id=1357 data-nosnippet>1357</a> </span>.unwrap()
+<a href=#1358 id=1358 data-nosnippet>1358</a> .try_collect()
+<a href=#1359 id=1359 data-nosnippet>1359</a> .<span class="kw">await
+<a href=#1360 id=1360 data-nosnippet>1360</a> </span>.unwrap();
+<a href=#1361 id=1361 data-nosnippet>1361</a> <span class="macro">assert_eq!</span>(plan_task.len(), <span class="number">2</span>);
+<a href=#1362 id=1362 data-nosnippet>1362</a>
+<a href=#1363 id=1363 data-nosnippet>1363</a> <span class="kw">let </span>reader = ArrowReaderBuilder::new(fixture.table.file_io().clone()).build();
+<a href=#1364 id=1364 data-nosnippet>1364</a> <span class="kw">let </span>batch_stream = reader
+<a href=#1365 id=1365 data-nosnippet>1365</a> .clone()
+<a href=#1366 id=1366 data-nosnippet>1366</a> .read(Box::pin(stream::iter(<span class="macro">vec!</span>[<span class="prelude-val">Ok</span>(plan_task.remove(<span class="number">0</span>))])))
+<a href=#1367 id=1367 data-nosnippet>1367</a> .unwrap();
+<a href=#1368 id=1368 data-nosnippet>1368</a> <span class="kw">let </span>batch_1: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#1369 id=1369 data-nosnippet>1369</a>
-<a href=#1370 id=1370 data-nosnippet>1370</a> <span class="kw">let </span>col2 = batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).unwrap();
-<a href=#1371 id=1371 data-nosnippet>1371</a> <span class="kw">let </span>int64_arr = col2.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1372 id=1372 data-nosnippet>1372</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">3</span>);
-<a href=#1373 id=1373 data-nosnippet>1373</a>
-<a href=#1374 id=1374 data-nosnippet>1374</a> <span class="comment">// test empty scan
-<a href=#1375 id=1375 data-nosnippet>1375</a> </span><span class="kw">let </span>table_scan = fixture.table.scan().select_empty().build().unwrap();
-<a href=#1376 id=1376 data-nosnippet>1376</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1377 id=1377 data-nosnippet>1377</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1370 id=1370 data-nosnippet>1370</a> <span class="kw">let </span>reader = ArrowReaderBuilder::new(fixture.table.file_io().clone()).build();
+<a href=#1371 id=1371 data-nosnippet>1371</a> <span class="kw">let </span>batch_stream = reader
+<a href=#1372 id=1372 data-nosnippet>1372</a> .read(Box::pin(stream::iter(<span class="macro">vec!</span>[<span class="prelude-val">Ok</span>(plan_task.remove(<span class="number">0</span>))])))
+<a href=#1373 id=1373 data-nosnippet>1373</a> .unwrap();
+<a href=#1374 id=1374 data-nosnippet>1374</a> <span class="kw">let </span>batch_2: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1375 id=1375 data-nosnippet>1375</a>
+<a href=#1376 id=1376 data-nosnippet>1376</a> <span class="macro">assert_eq!</span>(batch_1, batch_2);
+<a href=#1377 id=1377 data-nosnippet>1377</a> }
<a href=#1378 id=1378 data-nosnippet>1378</a>
-<a href=#1379 id=1379 data-nosnippet>1379</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">0</span>);
-<a href=#1380 id=1380 data-nosnippet>1380</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">1024</span>);
-<a href=#1381 id=1381 data-nosnippet>1381</a> }
-<a href=#1382 id=1382 data-nosnippet>1382</a>
-<a href=#1383 id=1383 data-nosnippet>1383</a> <span class="attr">#[tokio::test]
-<a href=#1384 id=1384 data-nosnippet>1384</a> </span><span class="kw">async fn </span>test_filter_on_arrow_lt() {
-<a href=#1385 id=1385 data-nosnippet>1385</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1386 id=1386 data-nosnippet>1386</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1387 id=1387 data-nosnippet>1387</a>
-<a href=#1388 id=1388 data-nosnippet>1388</a> <span class="comment">// Filter: y < 3
-<a href=#1389 id=1389 data-nosnippet>1389</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1390 id=1390 data-nosnippet>1390</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).less_than(Datum::long(<span class="number">3</span>));
-<a href=#1391 id=1391 data-nosnippet>1391</a> builder = builder
-<a href=#1392 id=1392 data-nosnippet>1392</a> .with_filter(predicate)
-<a href=#1393 id=1393 data-nosnippet>1393</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1394 id=1394 data-nosnippet>1394</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1395 id=1395 data-nosnippet>1395</a>
-<a href=#1396 id=1396 data-nosnippet>1396</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1397 id=1397 data-nosnippet>1397</a>
-<a href=#1398 id=1398 data-nosnippet>1398</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1399 id=1399 data-nosnippet>1399</a>
-<a href=#1400 id=1400 data-nosnippet>1400</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
-<a href=#1401 id=1401 data-nosnippet>1401</a>
-<a href=#1402 id=1402 data-nosnippet>1402</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1403 id=1403 data-nosnippet>1403</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1404 id=1404 data-nosnippet>1404</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
-<a href=#1405 id=1405 data-nosnippet>1405</a>
-<a href=#1406 id=1406 data-nosnippet>1406</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
-<a href=#1407 id=1407 data-nosnippet>1407</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1408 id=1408 data-nosnippet>1408</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">2</span>);
-<a href=#1409 id=1409 data-nosnippet>1409</a> }
-<a href=#1410 id=1410 data-nosnippet>1410</a>
-<a href=#1411 id=1411 data-nosnippet>1411</a> <span class="attr">#[tokio::test]
-<a href=#1412 id=1412 data-nosnippet>1412</a> </span><span class="kw">async fn </span>test_filter_on_arrow_gt_eq() {
-<a href=#1413 id=1413 data-nosnippet>1413</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1414 id=1414 data-nosnippet>1414</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1379 id=1379 data-nosnippet>1379</a> <span class="attr">#[tokio::test]
+<a href=#1380 id=1380 data-nosnippet>1380</a> </span><span class="kw">async fn </span>test_open_parquet_with_projection() {
+<a href=#1381 id=1381 data-nosnippet>1381</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1382 id=1382 data-nosnippet>1382</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1383 id=1383 data-nosnippet>1383</a>
+<a href=#1384 id=1384 data-nosnippet>1384</a> <span class="comment">// Create table scan for current snapshot and plan files
+<a href=#1385 id=1385 data-nosnippet>1385</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1386 id=1386 data-nosnippet>1386</a> .table
+<a href=#1387 id=1387 data-nosnippet>1387</a> .scan()
+<a href=#1388 id=1388 data-nosnippet>1388</a> .select([<span class="string">"x"</span>, <span class="string">"z"</span>])
+<a href=#1389 id=1389 data-nosnippet>1389</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1390 id=1390 data-nosnippet>1390</a> .build()
+<a href=#1391 id=1391 data-nosnippet>1391</a> .unwrap();
+<a href=#1392 id=1392 data-nosnippet>1392</a>
+<a href=#1393 id=1393 data-nosnippet>1393</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1394 id=1394 data-nosnippet>1394</a>
+<a href=#1395 id=1395 data-nosnippet>1395</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1396 id=1396 data-nosnippet>1396</a>
+<a href=#1397 id=1397 data-nosnippet>1397</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">2</span>);
+<a href=#1398 id=1398 data-nosnippet>1398</a>
+<a href=#1399 id=1399 data-nosnippet>1399</a> <span class="kw">let </span>col1 = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
+<a href=#1400 id=1400 data-nosnippet>1400</a> <span class="kw">let </span>int64_arr = col1.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1401 id=1401 data-nosnippet>1401</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
+<a href=#1402 id=1402 data-nosnippet>1402</a>
+<a href=#1403 id=1403 data-nosnippet>1403</a> <span class="kw">let </span>col2 = batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).unwrap();
+<a href=#1404 id=1404 data-nosnippet>1404</a> <span class="kw">let </span>int64_arr = col2.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1405 id=1405 data-nosnippet>1405</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">3</span>);
+<a href=#1406 id=1406 data-nosnippet>1406</a>
+<a href=#1407 id=1407 data-nosnippet>1407</a> <span class="comment">// test empty scan
+<a href=#1408 id=1408 data-nosnippet>1408</a> </span><span class="kw">let </span>table_scan = fixture.table.scan().select_empty().build().unwrap();
+<a href=#1409 id=1409 data-nosnippet>1409</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1410 id=1410 data-nosnippet>1410</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1411 id=1411 data-nosnippet>1411</a>
+<a href=#1412 id=1412 data-nosnippet>1412</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">0</span>);
+<a href=#1413 id=1413 data-nosnippet>1413</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">1024</span>);
+<a href=#1414 id=1414 data-nosnippet>1414</a> }
<a href=#1415 id=1415 data-nosnippet>1415</a>
-<a href=#1416 id=1416 data-nosnippet>1416</a> <span class="comment">// Filter: y >= 5
-<a href=#1417 id=1417 data-nosnippet>1417</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1418 id=1418 data-nosnippet>1418</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).greater_than_or_equal_to(Datum::long(<span class="number">5</span>));
-<a href=#1419 id=1419 data-nosnippet>1419</a> builder = builder
-<a href=#1420 id=1420 data-nosnippet>1420</a> .with_filter(predicate)
-<a href=#1421 id=1421 data-nosnippet>1421</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1422 id=1422 data-nosnippet>1422</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1423 id=1423 data-nosnippet>1423</a>
-<a href=#1424 id=1424 data-nosnippet>1424</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1425 id=1425 data-nosnippet>1425</a>
-<a href=#1426 id=1426 data-nosnippet>1426</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1427 id=1427 data-nosnippet>1427</a>
-<a href=#1428 id=1428 data-nosnippet>1428</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
-<a href=#1429 id=1429 data-nosnippet>1429</a>
-<a href=#1430 id=1430 data-nosnippet>1430</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1431 id=1431 data-nosnippet>1431</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1432 id=1432 data-nosnippet>1432</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
-<a href=#1433 id=1433 data-nosnippet>1433</a>
-<a href=#1434 id=1434 data-nosnippet>1434</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
-<a href=#1435 id=1435 data-nosnippet>1435</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1436 id=1436 data-nosnippet>1436</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">5</span>);
-<a href=#1437 id=1437 data-nosnippet>1437</a> }
+<a href=#1416 id=1416 data-nosnippet>1416</a> <span class="attr">#[tokio::test]
+<a href=#1417 id=1417 data-nosnippet>1417</a> </span><span class="kw">async fn </span>test_filter_on_arrow_lt() {
+<a href=#1418 id=1418 data-nosnippet>1418</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1419 id=1419 data-nosnippet>1419</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1420 id=1420 data-nosnippet>1420</a>
+<a href=#1421 id=1421 data-nosnippet>1421</a> <span class="comment">// Filter: y < 3
+<a href=#1422 id=1422 data-nosnippet>1422</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1423 id=1423 data-nosnippet>1423</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).less_than(Datum::long(<span class="number">3</span>));
+<a href=#1424 id=1424 data-nosnippet>1424</a> builder = builder
+<a href=#1425 id=1425 data-nosnippet>1425</a> .with_filter(predicate)
+<a href=#1426 id=1426 data-nosnippet>1426</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1427 id=1427 data-nosnippet>1427</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1428 id=1428 data-nosnippet>1428</a>
+<a href=#1429 id=1429 data-nosnippet>1429</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1430 id=1430 data-nosnippet>1430</a>
+<a href=#1431 id=1431 data-nosnippet>1431</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1432 id=1432 data-nosnippet>1432</a>
+<a href=#1433 id=1433 data-nosnippet>1433</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
+<a href=#1434 id=1434 data-nosnippet>1434</a>
+<a href=#1435 id=1435 data-nosnippet>1435</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
+<a href=#1436 id=1436 data-nosnippet>1436</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1437 id=1437 data-nosnippet>1437</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
<a href=#1438 id=1438 data-nosnippet>1438</a>
-<a href=#1439 id=1439 data-nosnippet>1439</a> <span class="attr">#[tokio::test]
-<a href=#1440 id=1440 data-nosnippet>1440</a> </span><span class="kw">async fn </span>test_filter_double_eq() {
-<a href=#1441 id=1441 data-nosnippet>1441</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1442 id=1442 data-nosnippet>1442</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1439 id=1439 data-nosnippet>1439</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
+<a href=#1440 id=1440 data-nosnippet>1440</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1441 id=1441 data-nosnippet>1441</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">2</span>);
+<a href=#1442 id=1442 data-nosnippet>1442</a> }
<a href=#1443 id=1443 data-nosnippet>1443</a>
-<a href=#1444 id=1444 data-nosnippet>1444</a> <span class="comment">// Filter: dbl == 150.0
-<a href=#1445 id=1445 data-nosnippet>1445</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1446 id=1446 data-nosnippet>1446</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"dbl"</span>).equal_to(Datum::double(<span class="number">150.0f64</span>));
-<a href=#1447 id=1447 data-nosnippet>1447</a> builder = builder
-<a href=#1448 id=1448 data-nosnippet>1448</a> .with_filter(predicate)
-<a href=#1449 id=1449 data-nosnippet>1449</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1450 id=1450 data-nosnippet>1450</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1451 id=1451 data-nosnippet>1451</a>
-<a href=#1452 id=1452 data-nosnippet>1452</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1453 id=1453 data-nosnippet>1453</a>
-<a href=#1454 id=1454 data-nosnippet>1454</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1455 id=1455 data-nosnippet>1455</a>
-<a href=#1456 id=1456 data-nosnippet>1456</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
-<a href=#1457 id=1457 data-nosnippet>1457</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
+<a href=#1444 id=1444 data-nosnippet>1444</a> <span class="attr">#[tokio::test]
+<a href=#1445 id=1445 data-nosnippet>1445</a> </span><span class="kw">async fn </span>test_filter_on_arrow_gt_eq() {
+<a href=#1446 id=1446 data-nosnippet>1446</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1447 id=1447 data-nosnippet>1447</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1448 id=1448 data-nosnippet>1448</a>
+<a href=#1449 id=1449 data-nosnippet>1449</a> <span class="comment">// Filter: y >= 5
+<a href=#1450 id=1450 data-nosnippet>1450</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1451 id=1451 data-nosnippet>1451</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).greater_than_or_equal_to(Datum::long(<span class="number">5</span>));
+<a href=#1452 id=1452 data-nosnippet>1452</a> builder = builder
+<a href=#1453 id=1453 data-nosnippet>1453</a> .with_filter(predicate)
+<a href=#1454 id=1454 data-nosnippet>1454</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1455 id=1455 data-nosnippet>1455</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1456 id=1456 data-nosnippet>1456</a>
+<a href=#1457 id=1457 data-nosnippet>1457</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
<a href=#1458 id=1458 data-nosnippet>1458</a>
-<a href=#1459 id=1459 data-nosnippet>1459</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"dbl"</span>).unwrap();
-<a href=#1460 id=1460 data-nosnippet>1460</a> <span class="kw">let </span>f64_arr = col.as_any().downcast_ref::<Float64Array>().unwrap();
-<a href=#1461 id=1461 data-nosnippet>1461</a> <span class="macro">assert_eq!</span>(f64_arr.value(<span class="number">1</span>), <span class="number">150.0f64</span>);
-<a href=#1462 id=1462 data-nosnippet>1462</a> }
-<a href=#1463 id=1463 data-nosnippet>1463</a>
-<a href=#1464 id=1464 data-nosnippet>1464</a> <span class="attr">#[tokio::test]
-<a href=#1465 id=1465 data-nosnippet>1465</a> </span><span class="kw">async fn </span>test_filter_int_eq() {
-<a href=#1466 id=1466 data-nosnippet>1466</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1467 id=1467 data-nosnippet>1467</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1468 id=1468 data-nosnippet>1468</a>
-<a href=#1469 id=1469 data-nosnippet>1469</a> <span class="comment">// Filter: i32 == 150
-<a href=#1470 id=1470 data-nosnippet>1470</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1471 id=1471 data-nosnippet>1471</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"i32"</span>).equal_to(Datum::int(<span class="number">150i32</span>));
-<a href=#1472 id=1472 data-nosnippet>1472</a> builder = builder
-<a href=#1473 id=1473 data-nosnippet>1473</a> .with_filter(predicate)
-<a href=#1474 id=1474 data-nosnippet>1474</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1475 id=1475 data-nosnippet>1475</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1459 id=1459 data-nosnippet>1459</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1460 id=1460 data-nosnippet>1460</a>
+<a href=#1461 id=1461 data-nosnippet>1461</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
+<a href=#1462 id=1462 data-nosnippet>1462</a>
+<a href=#1463 id=1463 data-nosnippet>1463</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
+<a href=#1464 id=1464 data-nosnippet>1464</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1465 id=1465 data-nosnippet>1465</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">1</span>);
+<a href=#1466 id=1466 data-nosnippet>1466</a>
+<a href=#1467 id=1467 data-nosnippet>1467</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
+<a href=#1468 id=1468 data-nosnippet>1468</a> <span class="kw">let </span>int64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1469 id=1469 data-nosnippet>1469</a> <span class="macro">assert_eq!</span>(int64_arr.value(<span class="number">0</span>), <span class="number">5</span>);
+<a href=#1470 id=1470 data-nosnippet>1470</a> }
+<a href=#1471 id=1471 data-nosnippet>1471</a>
+<a href=#1472 id=1472 data-nosnippet>1472</a> <span class="attr">#[tokio::test]
+<a href=#1473 id=1473 data-nosnippet>1473</a> </span><span class="kw">async fn </span>test_filter_double_eq() {
+<a href=#1474 id=1474 data-nosnippet>1474</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1475 id=1475 data-nosnippet>1475</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1476 id=1476 data-nosnippet>1476</a>
-<a href=#1477 id=1477 data-nosnippet>1477</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1478 id=1478 data-nosnippet>1478</a>
-<a href=#1479 id=1479 data-nosnippet>1479</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1480 id=1480 data-nosnippet>1480</a>
-<a href=#1481 id=1481 data-nosnippet>1481</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
-<a href=#1482 id=1482 data-nosnippet>1482</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
-<a href=#1483 id=1483 data-nosnippet>1483</a>
-<a href=#1484 id=1484 data-nosnippet>1484</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"i32"</span>).unwrap();
-<a href=#1485 id=1485 data-nosnippet>1485</a> <span class="kw">let </span>i32_arr = col.as_any().downcast_ref::<Int32Array>().unwrap();
-<a href=#1486 id=1486 data-nosnippet>1486</a> <span class="macro">assert_eq!</span>(i32_arr.value(<span class="number">1</span>), <span class="number">150i32</span>);
-<a href=#1487 id=1487 data-nosnippet>1487</a> }
+<a href=#1477 id=1477 data-nosnippet>1477</a> <span class="comment">// Filter: dbl == 150.0
+<a href=#1478 id=1478 data-nosnippet>1478</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1479 id=1479 data-nosnippet>1479</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"dbl"</span>).equal_to(Datum::double(<span class="number">150.0f64</span>));
+<a href=#1480 id=1480 data-nosnippet>1480</a> builder = builder
+<a href=#1481 id=1481 data-nosnippet>1481</a> .with_filter(predicate)
+<a href=#1482 id=1482 data-nosnippet>1482</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1483 id=1483 data-nosnippet>1483</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1484 id=1484 data-nosnippet>1484</a>
+<a href=#1485 id=1485 data-nosnippet>1485</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1486 id=1486 data-nosnippet>1486</a>
+<a href=#1487 id=1487 data-nosnippet>1487</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#1488 id=1488 data-nosnippet>1488</a>
-<a href=#1489 id=1489 data-nosnippet>1489</a> <span class="attr">#[tokio::test]
-<a href=#1490 id=1490 data-nosnippet>1490</a> </span><span class="kw">async fn </span>test_filter_long_eq() {
-<a href=#1491 id=1491 data-nosnippet>1491</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1492 id=1492 data-nosnippet>1492</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1493 id=1493 data-nosnippet>1493</a>
-<a href=#1494 id=1494 data-nosnippet>1494</a> <span class="comment">// Filter: i64 == 150
-<a href=#1495 id=1495 data-nosnippet>1495</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1496 id=1496 data-nosnippet>1496</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"i64"</span>).equal_to(Datum::long(<span class="number">150i64</span>));
-<a href=#1497 id=1497 data-nosnippet>1497</a> builder = builder
-<a href=#1498 id=1498 data-nosnippet>1498</a> .with_filter(predicate)
-<a href=#1499 id=1499 data-nosnippet>1499</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1500 id=1500 data-nosnippet>1500</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1489 id=1489 data-nosnippet>1489</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
+<a href=#1490 id=1490 data-nosnippet>1490</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
+<a href=#1491 id=1491 data-nosnippet>1491</a>
+<a href=#1492 id=1492 data-nosnippet>1492</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"dbl"</span>).unwrap();
+<a href=#1493 id=1493 data-nosnippet>1493</a> <span class="kw">let </span>f64_arr = col.as_any().downcast_ref::<Float64Array>().unwrap();
+<a href=#1494 id=1494 data-nosnippet>1494</a> <span class="macro">assert_eq!</span>(f64_arr.value(<span class="number">1</span>), <span class="number">150.0f64</span>);
+<a href=#1495 id=1495 data-nosnippet>1495</a> }
+<a href=#1496 id=1496 data-nosnippet>1496</a>
+<a href=#1497 id=1497 data-nosnippet>1497</a> <span class="attr">#[tokio::test]
+<a href=#1498 id=1498 data-nosnippet>1498</a> </span><span class="kw">async fn </span>test_filter_int_eq() {
+<a href=#1499 id=1499 data-nosnippet>1499</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1500 id=1500 data-nosnippet>1500</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1501 id=1501 data-nosnippet>1501</a>
-<a href=#1502 id=1502 data-nosnippet>1502</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1503 id=1503 data-nosnippet>1503</a>
-<a href=#1504 id=1504 data-nosnippet>1504</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1505 id=1505 data-nosnippet>1505</a>
-<a href=#1506 id=1506 data-nosnippet>1506</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
-<a href=#1507 id=1507 data-nosnippet>1507</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
-<a href=#1508 id=1508 data-nosnippet>1508</a>
-<a href=#1509 id=1509 data-nosnippet>1509</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"i64"</span>).unwrap();
-<a href=#1510 id=1510 data-nosnippet>1510</a> <span class="kw">let </span>i64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
-<a href=#1511 id=1511 data-nosnippet>1511</a> <span class="macro">assert_eq!</span>(i64_arr.value(<span class="number">1</span>), <span class="number">150i64</span>);
-<a href=#1512 id=1512 data-nosnippet>1512</a> }
+<a href=#1502 id=1502 data-nosnippet>1502</a> <span class="comment">// Filter: i32 == 150
+<a href=#1503 id=1503 data-nosnippet>1503</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1504 id=1504 data-nosnippet>1504</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"i32"</span>).equal_to(Datum::int(<span class="number">150i32</span>));
+<a href=#1505 id=1505 data-nosnippet>1505</a> builder = builder
+<a href=#1506 id=1506 data-nosnippet>1506</a> .with_filter(predicate)
+<a href=#1507 id=1507 data-nosnippet>1507</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1508 id=1508 data-nosnippet>1508</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1509 id=1509 data-nosnippet>1509</a>
+<a href=#1510 id=1510 data-nosnippet>1510</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1511 id=1511 data-nosnippet>1511</a>
+<a href=#1512 id=1512 data-nosnippet>1512</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#1513 id=1513 data-nosnippet>1513</a>
-<a href=#1514 id=1514 data-nosnippet>1514</a> <span class="attr">#[tokio::test]
-<a href=#1515 id=1515 data-nosnippet>1515</a> </span><span class="kw">async fn </span>test_filter_bool_eq() {
-<a href=#1516 id=1516 data-nosnippet>1516</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1517 id=1517 data-nosnippet>1517</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1518 id=1518 data-nosnippet>1518</a>
-<a href=#1519 id=1519 data-nosnippet>1519</a> <span class="comment">// Filter: bool == true
-<a href=#1520 id=1520 data-nosnippet>1520</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1521 id=1521 data-nosnippet>1521</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"bool"</span>).equal_to(Datum::bool(<span class="bool-val">true</span>));
-<a href=#1522 id=1522 data-nosnippet>1522</a> builder = builder
-<a href=#1523 id=1523 data-nosnippet>1523</a> .with_filter(predicate)
-<a href=#1524 id=1524 data-nosnippet>1524</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1525 id=1525 data-nosnippet>1525</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1514 id=1514 data-nosnippet>1514</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
+<a href=#1515 id=1515 data-nosnippet>1515</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
+<a href=#1516 id=1516 data-nosnippet>1516</a>
+<a href=#1517 id=1517 data-nosnippet>1517</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"i32"</span>).unwrap();
+<a href=#1518 id=1518 data-nosnippet>1518</a> <span class="kw">let </span>i32_arr = col.as_any().downcast_ref::<Int32Array>().unwrap();
+<a href=#1519 id=1519 data-nosnippet>1519</a> <span class="macro">assert_eq!</span>(i32_arr.value(<span class="number">1</span>), <span class="number">150i32</span>);
+<a href=#1520 id=1520 data-nosnippet>1520</a> }
+<a href=#1521 id=1521 data-nosnippet>1521</a>
+<a href=#1522 id=1522 data-nosnippet>1522</a> <span class="attr">#[tokio::test]
+<a href=#1523 id=1523 data-nosnippet>1523</a> </span><span class="kw">async fn </span>test_filter_long_eq() {
+<a href=#1524 id=1524 data-nosnippet>1524</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1525 id=1525 data-nosnippet>1525</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1526 id=1526 data-nosnippet>1526</a>
-<a href=#1527 id=1527 data-nosnippet>1527</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1528 id=1528 data-nosnippet>1528</a>
-<a href=#1529 id=1529 data-nosnippet>1529</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1530 id=1530 data-nosnippet>1530</a>
-<a href=#1531 id=1531 data-nosnippet>1531</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
-<a href=#1532 id=1532 data-nosnippet>1532</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
-<a href=#1533 id=1533 data-nosnippet>1533</a>
-<a href=#1534 id=1534 data-nosnippet>1534</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"bool"</span>).unwrap();
-<a href=#1535 id=1535 data-nosnippet>1535</a> <span class="kw">let </span>bool_arr = col.as_any().downcast_ref::<BooleanArray>().unwrap();
-<a href=#1536 id=1536 data-nosnippet>1536</a> <span class="macro">assert!</span>(bool_arr.value(<span class="number">1</span>));
-<a href=#1537 id=1537 data-nosnippet>1537</a> }
+<a href=#1527 id=1527 data-nosnippet>1527</a> <span class="comment">// Filter: i64 == 150
+<a href=#1528 id=1528 data-nosnippet>1528</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1529 id=1529 data-nosnippet>1529</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"i64"</span>).equal_to(Datum::long(<span class="number">150i64</span>));
+<a href=#1530 id=1530 data-nosnippet>1530</a> builder = builder
+<a href=#1531 id=1531 data-nosnippet>1531</a> .with_filter(predicate)
+<a href=#1532 id=1532 data-nosnippet>1532</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1533 id=1533 data-nosnippet>1533</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1534 id=1534 data-nosnippet>1534</a>
+<a href=#1535 id=1535 data-nosnippet>1535</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1536 id=1536 data-nosnippet>1536</a>
+<a href=#1537 id=1537 data-nosnippet>1537</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#1538 id=1538 data-nosnippet>1538</a>
-<a href=#1539 id=1539 data-nosnippet>1539</a> <span class="attr">#[tokio::test]
-<a href=#1540 id=1540 data-nosnippet>1540</a> </span><span class="kw">async fn </span>test_filter_on_arrow_is_null() {
-<a href=#1541 id=1541 data-nosnippet>1541</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1542 id=1542 data-nosnippet>1542</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1543 id=1543 data-nosnippet>1543</a>
-<a href=#1544 id=1544 data-nosnippet>1544</a> <span class="comment">// Filter: y is null
-<a href=#1545 id=1545 data-nosnippet>1545</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1546 id=1546 data-nosnippet>1546</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).is_null();
-<a href=#1547 id=1547 data-nosnippet>1547</a> builder = builder
-<a href=#1548 id=1548 data-nosnippet>1548</a> .with_filter(predicate)
-<a href=#1549 id=1549 data-nosnippet>1549</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1550 id=1550 data-nosnippet>1550</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1539 id=1539 data-nosnippet>1539</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
+<a href=#1540 id=1540 data-nosnippet>1540</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">12</span>);
+<a href=#1541 id=1541 data-nosnippet>1541</a>
+<a href=#1542 id=1542 data-nosnippet>1542</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"i64"</span>).unwrap();
+<a href=#1543 id=1543 data-nosnippet>1543</a> <span class="kw">let </span>i64_arr = col.as_any().downcast_ref::<Int64Array>().unwrap();
+<a href=#1544 id=1544 data-nosnippet>1544</a> <span class="macro">assert_eq!</span>(i64_arr.value(<span class="number">1</span>), <span class="number">150i64</span>);
+<a href=#1545 id=1545 data-nosnippet>1545</a> }
+<a href=#1546 id=1546 data-nosnippet>1546</a>
+<a href=#1547 id=1547 data-nosnippet>1547</a> <span class="attr">#[tokio::test]
+<a href=#1548 id=1548 data-nosnippet>1548</a> </span><span class="kw">async fn </span>test_filter_bool_eq() {
+<a href=#1549 id=1549 data-nosnippet>1549</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1550 id=1550 data-nosnippet>1550</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1551 id=1551 data-nosnippet>1551</a>
-<a href=#1552 id=1552 data-nosnippet>1552</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1553 id=1553 data-nosnippet>1553</a>
-<a href=#1554 id=1554 data-nosnippet>1554</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1555 id=1555 data-nosnippet>1555</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">0</span>);
-<a href=#1556 id=1556 data-nosnippet>1556</a> }
-<a href=#1557 id=1557 data-nosnippet>1557</a>
-<a href=#1558 id=1558 data-nosnippet>1558</a> <span class="attr">#[tokio::test]
-<a href=#1559 id=1559 data-nosnippet>1559</a> </span><span class="kw">async fn </span>test_filter_on_arrow_is_not_null() {
-<a href=#1560 id=1560 data-nosnippet>1560</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1561 id=1561 data-nosnippet>1561</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1562 id=1562 data-nosnippet>1562</a>
-<a href=#1563 id=1563 data-nosnippet>1563</a> <span class="comment">// Filter: y is not null
-<a href=#1564 id=1564 data-nosnippet>1564</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1565 id=1565 data-nosnippet>1565</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).is_not_null();
-<a href=#1566 id=1566 data-nosnippet>1566</a> builder = builder
-<a href=#1567 id=1567 data-nosnippet>1567</a> .with_filter(predicate)
-<a href=#1568 id=1568 data-nosnippet>1568</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1569 id=1569 data-nosnippet>1569</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1570 id=1570 data-nosnippet>1570</a>
-<a href=#1571 id=1571 data-nosnippet>1571</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1572 id=1572 data-nosnippet>1572</a>
-<a href=#1573 id=1573 data-nosnippet>1573</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1574 id=1574 data-nosnippet>1574</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">1024</span>);
-<a href=#1575 id=1575 data-nosnippet>1575</a> }
+<a href=#1552 id=1552 data-nosnippet>1552</a> <span class="comment">// Filter: bool == true
+<a href=#1553 id=1553 data-nosnippet>1553</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1554 id=1554 data-nosnippet>1554</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"bool"</span>).equal_to(Datum::bool(<span class="bool-val">true</span>));
+<a href=#1555 id=1555 data-nosnippet>1555</a> builder = builder
+<a href=#1556 id=1556 data-nosnippet>1556</a> .with_filter(predicate)
+<a href=#1557 id=1557 data-nosnippet>1557</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1558 id=1558 data-nosnippet>1558</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1559 id=1559 data-nosnippet>1559</a>
+<a href=#1560 id=1560 data-nosnippet>1560</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1561 id=1561 data-nosnippet>1561</a>
+<a href=#1562 id=1562 data-nosnippet>1562</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1563 id=1563 data-nosnippet>1563</a>
+<a href=#1564 id=1564 data-nosnippet>1564</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">2</span>);
+<a href=#1565 id=1565 data-nosnippet>1565</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
+<a href=#1566 id=1566 data-nosnippet>1566</a>
+<a href=#1567 id=1567 data-nosnippet>1567</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"bool"</span>).unwrap();
+<a href=#1568 id=1568 data-nosnippet>1568</a> <span class="kw">let </span>bool_arr = col.as_any().downcast_ref::<BooleanArray>().unwrap();
+<a href=#1569 id=1569 data-nosnippet>1569</a> <span class="macro">assert!</span>(bool_arr.value(<span class="number">1</span>));
+<a href=#1570 id=1570 data-nosnippet>1570</a> }
+<a href=#1571 id=1571 data-nosnippet>1571</a>
+<a href=#1572 id=1572 data-nosnippet>1572</a> <span class="attr">#[tokio::test]
+<a href=#1573 id=1573 data-nosnippet>1573</a> </span><span class="kw">async fn </span>test_filter_on_arrow_is_null() {
+<a href=#1574 id=1574 data-nosnippet>1574</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1575 id=1575 data-nosnippet>1575</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1576 id=1576 data-nosnippet>1576</a>
-<a href=#1577 id=1577 data-nosnippet>1577</a> <span class="attr">#[tokio::test]
-<a href=#1578 id=1578 data-nosnippet>1578</a> </span><span class="kw">async fn </span>test_filter_on_arrow_lt_and_gt() {
-<a href=#1579 id=1579 data-nosnippet>1579</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1580 id=1580 data-nosnippet>1580</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1581 id=1581 data-nosnippet>1581</a>
-<a href=#1582 id=1582 data-nosnippet>1582</a> <span class="comment">// Filter: y < 5 AND z >= 4
-<a href=#1583 id=1583 data-nosnippet>1583</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1584 id=1584 data-nosnippet>1584</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>)
-<a href=#1585 id=1585 data-nosnippet>1585</a> .less_than(Datum::long(<span class="number">5</span>))
-<a href=#1586 id=1586 data-nosnippet>1586</a> .and(Reference::new(<span class="string">"z"</span>).greater_than_or_equal_to(Datum::long(<span class="number">4</span>)));
-<a href=#1587 id=1587 data-nosnippet>1587</a> builder = builder
-<a href=#1588 id=1588 data-nosnippet>1588</a> .with_filter(predicate)
-<a href=#1589 id=1589 data-nosnippet>1589</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1590 id=1590 data-nosnippet>1590</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1591 id=1591 data-nosnippet>1591</a>
-<a href=#1592 id=1592 data-nosnippet>1592</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1593 id=1593 data-nosnippet>1593</a>
-<a href=#1594 id=1594 data-nosnippet>1594</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1595 id=1595 data-nosnippet>1595</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">500</span>);
-<a href=#1596 id=1596 data-nosnippet>1596</a>
-<a href=#1597 id=1597 data-nosnippet>1597</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1598 id=1598 data-nosnippet>1598</a> <span class="kw">let </span>expected_x = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">500</span>])) <span class="kw">as </span>ArrayRef;
-<a href=#1599 id=1599 data-nosnippet>1599</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_x);
-<a href=#1600 id=1600 data-nosnippet>1600</a>
-<a href=#1601 id=1601 data-nosnippet>1601</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
-<a href=#1602 id=1602 data-nosnippet>1602</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[];
-<a href=#1603 id=1603 data-nosnippet>1603</a> values.append(<span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">200</span>].as_mut());
-<a href=#1604 id=1604 data-nosnippet>1604</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">300</span>].as_mut());
-<a href=#1605 id=1605 data-nosnippet>1605</a> <span class="kw">let </span>expected_y = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#1606 id=1606 data-nosnippet>1606</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_y);
-<a href=#1607 id=1607 data-nosnippet>1607</a>
-<a href=#1608 id=1608 data-nosnippet>1608</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).unwrap();
-<a href=#1609 id=1609 data-nosnippet>1609</a> <span class="kw">let </span>expected_z = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">500</span>])) <span class="kw">as </span>ArrayRef;
-<a href=#1610 id=1610 data-nosnippet>1610</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_z);
-<a href=#1611 id=1611 data-nosnippet>1611</a> }
-<a href=#1612 id=1612 data-nosnippet>1612</a>
-<a href=#1613 id=1613 data-nosnippet>1613</a> <span class="attr">#[tokio::test]
-<a href=#1614 id=1614 data-nosnippet>1614</a> </span><span class="kw">async fn </span>test_filter_on_arrow_lt_or_gt() {
-<a href=#1615 id=1615 data-nosnippet>1615</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1616 id=1616 data-nosnippet>1616</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1617 id=1617 data-nosnippet>1617</a>
-<a href=#1618 id=1618 data-nosnippet>1618</a> <span class="comment">// Filter: y < 5 AND z >= 4
-<a href=#1619 id=1619 data-nosnippet>1619</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1620 id=1620 data-nosnippet>1620</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>)
-<a href=#1621 id=1621 data-nosnippet>1621</a> .less_than(Datum::long(<span class="number">5</span>))
-<a href=#1622 id=1622 data-nosnippet>1622</a> .or(Reference::new(<span class="string">"z"</span>).greater_than_or_equal_to(Datum::long(<span class="number">4</span>)));
-<a href=#1623 id=1623 data-nosnippet>1623</a> builder = builder
-<a href=#1624 id=1624 data-nosnippet>1624</a> .with_filter(predicate)
-<a href=#1625 id=1625 data-nosnippet>1625</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1626 id=1626 data-nosnippet>1626</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1627 id=1627 data-nosnippet>1627</a>
-<a href=#1628 id=1628 data-nosnippet>1628</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1577 id=1577 data-nosnippet>1577</a> <span class="comment">// Filter: y is null
+<a href=#1578 id=1578 data-nosnippet>1578</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1579 id=1579 data-nosnippet>1579</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).is_null();
+<a href=#1580 id=1580 data-nosnippet>1580</a> builder = builder
+<a href=#1581 id=1581 data-nosnippet>1581</a> .with_filter(predicate)
+<a href=#1582 id=1582 data-nosnippet>1582</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1583 id=1583 data-nosnippet>1583</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1584 id=1584 data-nosnippet>1584</a>
+<a href=#1585 id=1585 data-nosnippet>1585</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1586 id=1586 data-nosnippet>1586</a>
+<a href=#1587 id=1587 data-nosnippet>1587</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1588 id=1588 data-nosnippet>1588</a> <span class="macro">assert_eq!</span>(batches.len(), <span class="number">0</span>);
+<a href=#1589 id=1589 data-nosnippet>1589</a> }
+<a href=#1590 id=1590 data-nosnippet>1590</a>
+<a href=#1591 id=1591 data-nosnippet>1591</a> <span class="attr">#[tokio::test]
+<a href=#1592 id=1592 data-nosnippet>1592</a> </span><span class="kw">async fn </span>test_filter_on_arrow_is_not_null() {
+<a href=#1593 id=1593 data-nosnippet>1593</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1594 id=1594 data-nosnippet>1594</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1595 id=1595 data-nosnippet>1595</a>
+<a href=#1596 id=1596 data-nosnippet>1596</a> <span class="comment">// Filter: y is not null
+<a href=#1597 id=1597 data-nosnippet>1597</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1598 id=1598 data-nosnippet>1598</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>).is_not_null();
+<a href=#1599 id=1599 data-nosnippet>1599</a> builder = builder
+<a href=#1600 id=1600 data-nosnippet>1600</a> .with_filter(predicate)
+<a href=#1601 id=1601 data-nosnippet>1601</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1602 id=1602 data-nosnippet>1602</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1603 id=1603 data-nosnippet>1603</a>
+<a href=#1604 id=1604 data-nosnippet>1604</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1605 id=1605 data-nosnippet>1605</a>
+<a href=#1606 id=1606 data-nosnippet>1606</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1607 id=1607 data-nosnippet>1607</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">1024</span>);
+<a href=#1608 id=1608 data-nosnippet>1608</a> }
+<a href=#1609 id=1609 data-nosnippet>1609</a>
+<a href=#1610 id=1610 data-nosnippet>1610</a> <span class="attr">#[tokio::test]
+<a href=#1611 id=1611 data-nosnippet>1611</a> </span><span class="kw">async fn </span>test_filter_on_arrow_lt_and_gt() {
+<a href=#1612 id=1612 data-nosnippet>1612</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1613 id=1613 data-nosnippet>1613</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1614 id=1614 data-nosnippet>1614</a>
+<a href=#1615 id=1615 data-nosnippet>1615</a> <span class="comment">// Filter: y < 5 AND z >= 4
+<a href=#1616 id=1616 data-nosnippet>1616</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1617 id=1617 data-nosnippet>1617</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>)
+<a href=#1618 id=1618 data-nosnippet>1618</a> .less_than(Datum::long(<span class="number">5</span>))
+<a href=#1619 id=1619 data-nosnippet>1619</a> .and(Reference::new(<span class="string">"z"</span>).greater_than_or_equal_to(Datum::long(<span class="number">4</span>)));
+<a href=#1620 id=1620 data-nosnippet>1620</a> builder = builder
+<a href=#1621 id=1621 data-nosnippet>1621</a> .with_filter(predicate)
+<a href=#1622 id=1622 data-nosnippet>1622</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1623 id=1623 data-nosnippet>1623</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1624 id=1624 data-nosnippet>1624</a>
+<a href=#1625 id=1625 data-nosnippet>1625</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1626 id=1626 data-nosnippet>1626</a>
+<a href=#1627 id=1627 data-nosnippet>1627</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1628 id=1628 data-nosnippet>1628</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">500</span>);
<a href=#1629 id=1629 data-nosnippet>1629</a>
-<a href=#1630 id=1630 data-nosnippet>1630</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1631 id=1631 data-nosnippet>1631</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">1024</span>);
-<a href=#1632 id=1632 data-nosnippet>1632</a>
-<a href=#1633 id=1633 data-nosnippet>1633</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1634 id=1634 data-nosnippet>1634</a> <span class="kw">let </span>expected_x = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">1024</span>])) <span class="kw">as </span>ArrayRef;
-<a href=#1635 id=1635 data-nosnippet>1635</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_x);
-<a href=#1636 id=1636 data-nosnippet>1636</a>
-<a href=#1637 id=1637 data-nosnippet>1637</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
-<a href=#1638 id=1638 data-nosnippet>1638</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">2</span>; <span class="number">512</span>];
-<a href=#1639 id=1639 data-nosnippet>1639</a> values.append(<span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">200</span>].as_mut());
-<a href=#1640 id=1640 data-nosnippet>1640</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">300</span>].as_mut());
-<a href=#1641 id=1641 data-nosnippet>1641</a> values.append(<span class="macro">vec!</span>[<span class="number">5</span>; <span class="number">12</span>].as_mut());
-<a href=#1642 id=1642 data-nosnippet>1642</a> <span class="kw">let </span>expected_y = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#1643 id=1643 data-nosnippet>1643</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_y);
-<a href=#1644 id=1644 data-nosnippet>1644</a>
-<a href=#1645 id=1645 data-nosnippet>1645</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).unwrap();
-<a href=#1646 id=1646 data-nosnippet>1646</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">512</span>];
-<a href=#1647 id=1647 data-nosnippet>1647</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">512</span>].as_mut());
-<a href=#1648 id=1648 data-nosnippet>1648</a> <span class="kw">let </span>expected_z = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
-<a href=#1649 id=1649 data-nosnippet>1649</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_z);
-<a href=#1650 id=1650 data-nosnippet>1650</a> }
-<a href=#1651 id=1651 data-nosnippet>1651</a>
-<a href=#1652 id=1652 data-nosnippet>1652</a> <span class="attr">#[tokio::test]
-<a href=#1653 id=1653 data-nosnippet>1653</a> </span><span class="kw">async fn </span>test_filter_on_arrow_startswith() {
-<a href=#1654 id=1654 data-nosnippet>1654</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1655 id=1655 data-nosnippet>1655</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1656 id=1656 data-nosnippet>1656</a>
-<a href=#1657 id=1657 data-nosnippet>1657</a> <span class="comment">// Filter: a STARTSWITH "Ice"
-<a href=#1658 id=1658 data-nosnippet>1658</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1659 id=1659 data-nosnippet>1659</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"a"</span>).starts_with(Datum::string(<span class="string">"Ice"</span>));
-<a href=#1660 id=1660 data-nosnippet>1660</a> builder = builder
-<a href=#1661 id=1661 data-nosnippet>1661</a> .with_filter(predicate)
-<a href=#1662 id=1662 data-nosnippet>1662</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1663 id=1663 data-nosnippet>1663</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1664 id=1664 data-nosnippet>1664</a>
-<a href=#1665 id=1665 data-nosnippet>1665</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1666 id=1666 data-nosnippet>1666</a>
-<a href=#1667 id=1667 data-nosnippet>1667</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1668 id=1668 data-nosnippet>1668</a>
-<a href=#1669 id=1669 data-nosnippet>1669</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
-<a href=#1670 id=1670 data-nosnippet>1670</a>
-<a href=#1671 id=1671 data-nosnippet>1671</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
-<a href=#1672 id=1672 data-nosnippet>1672</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
-<a href=#1673 id=1673 data-nosnippet>1673</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Iceberg"</span>);
-<a href=#1674 id=1674 data-nosnippet>1674</a> }
-<a href=#1675 id=1675 data-nosnippet>1675</a>
-<a href=#1676 id=1676 data-nosnippet>1676</a> <span class="attr">#[tokio::test]
-<a href=#1677 id=1677 data-nosnippet>1677</a> </span><span class="kw">async fn </span>test_filter_on_arrow_not_startswith() {
-<a href=#1678 id=1678 data-nosnippet>1678</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1679 id=1679 data-nosnippet>1679</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1680 id=1680 data-nosnippet>1680</a>
-<a href=#1681 id=1681 data-nosnippet>1681</a> <span class="comment">// Filter: a NOT STARTSWITH "Ice"
-<a href=#1682 id=1682 data-nosnippet>1682</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1683 id=1683 data-nosnippet>1683</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"a"</span>).not_starts_with(Datum::string(<span class="string">"Ice"</span>));
-<a href=#1684 id=1684 data-nosnippet>1684</a> builder = builder
-<a href=#1685 id=1685 data-nosnippet>1685</a> .with_filter(predicate)
-<a href=#1686 id=1686 data-nosnippet>1686</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1687 id=1687 data-nosnippet>1687</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1688 id=1688 data-nosnippet>1688</a>
-<a href=#1689 id=1689 data-nosnippet>1689</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1690 id=1690 data-nosnippet>1690</a>
-<a href=#1691 id=1691 data-nosnippet>1691</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1692 id=1692 data-nosnippet>1692</a>
-<a href=#1693 id=1693 data-nosnippet>1693</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
-<a href=#1694 id=1694 data-nosnippet>1694</a>
-<a href=#1695 id=1695 data-nosnippet>1695</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
-<a href=#1696 id=1696 data-nosnippet>1696</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
-<a href=#1697 id=1697 data-nosnippet>1697</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Apache"</span>);
-<a href=#1698 id=1698 data-nosnippet>1698</a> }
+<a href=#1630 id=1630 data-nosnippet>1630</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
+<a href=#1631 id=1631 data-nosnippet>1631</a> <span class="kw">let </span>expected_x = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">500</span>])) <span class="kw">as </span>ArrayRef;
+<a href=#1632 id=1632 data-nosnippet>1632</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_x);
+<a href=#1633 id=1633 data-nosnippet>1633</a>
+<a href=#1634 id=1634 data-nosnippet>1634</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
+<a href=#1635 id=1635 data-nosnippet>1635</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[];
+<a href=#1636 id=1636 data-nosnippet>1636</a> values.append(<span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">200</span>].as_mut());
+<a href=#1637 id=1637 data-nosnippet>1637</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">300</span>].as_mut());
+<a href=#1638 id=1638 data-nosnippet>1638</a> <span class="kw">let </span>expected_y = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#1639 id=1639 data-nosnippet>1639</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_y);
+<a href=#1640 id=1640 data-nosnippet>1640</a>
+<a href=#1641 id=1641 data-nosnippet>1641</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).unwrap();
+<a href=#1642 id=1642 data-nosnippet>1642</a> <span class="kw">let </span>expected_z = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">500</span>])) <span class="kw">as </span>ArrayRef;
+<a href=#1643 id=1643 data-nosnippet>1643</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_z);
+<a href=#1644 id=1644 data-nosnippet>1644</a> }
+<a href=#1645 id=1645 data-nosnippet>1645</a>
+<a href=#1646 id=1646 data-nosnippet>1646</a> <span class="attr">#[tokio::test]
+<a href=#1647 id=1647 data-nosnippet>1647</a> </span><span class="kw">async fn </span>test_filter_on_arrow_lt_or_gt() {
+<a href=#1648 id=1648 data-nosnippet>1648</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1649 id=1649 data-nosnippet>1649</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1650 id=1650 data-nosnippet>1650</a>
+<a href=#1651 id=1651 data-nosnippet>1651</a> <span class="comment">// Filter: y < 5 AND z >= 4
+<a href=#1652 id=1652 data-nosnippet>1652</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1653 id=1653 data-nosnippet>1653</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"y"</span>)
+<a href=#1654 id=1654 data-nosnippet>1654</a> .less_than(Datum::long(<span class="number">5</span>))
+<a href=#1655 id=1655 data-nosnippet>1655</a> .or(Reference::new(<span class="string">"z"</span>).greater_than_or_equal_to(Datum::long(<span class="number">4</span>)));
+<a href=#1656 id=1656 data-nosnippet>1656</a> builder = builder
+<a href=#1657 id=1657 data-nosnippet>1657</a> .with_filter(predicate)
+<a href=#1658 id=1658 data-nosnippet>1658</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1659 id=1659 data-nosnippet>1659</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1660 id=1660 data-nosnippet>1660</a>
+<a href=#1661 id=1661 data-nosnippet>1661</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1662 id=1662 data-nosnippet>1662</a>
+<a href=#1663 id=1663 data-nosnippet>1663</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1664 id=1664 data-nosnippet>1664</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">1024</span>);
+<a href=#1665 id=1665 data-nosnippet>1665</a>
+<a href=#1666 id=1666 data-nosnippet>1666</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
+<a href=#1667 id=1667 data-nosnippet>1667</a> <span class="kw">let </span>expected_x = Arc::new(Int64Array::from_iter_values(<span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">1024</span>])) <span class="kw">as </span>ArrayRef;
+<a href=#1668 id=1668 data-nosnippet>1668</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_x);
+<a href=#1669 id=1669 data-nosnippet>1669</a>
+<a href=#1670 id=1670 data-nosnippet>1670</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"y"</span>).unwrap();
+<a href=#1671 id=1671 data-nosnippet>1671</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">2</span>; <span class="number">512</span>];
+<a href=#1672 id=1672 data-nosnippet>1672</a> values.append(<span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">200</span>].as_mut());
+<a href=#1673 id=1673 data-nosnippet>1673</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">300</span>].as_mut());
+<a href=#1674 id=1674 data-nosnippet>1674</a> values.append(<span class="macro">vec!</span>[<span class="number">5</span>; <span class="number">12</span>].as_mut());
+<a href=#1675 id=1675 data-nosnippet>1675</a> <span class="kw">let </span>expected_y = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#1676 id=1676 data-nosnippet>1676</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_y);
+<a href=#1677 id=1677 data-nosnippet>1677</a>
+<a href=#1678 id=1678 data-nosnippet>1678</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).unwrap();
+<a href=#1679 id=1679 data-nosnippet>1679</a> <span class="kw">let </span><span class="kw-2">mut </span>values = <span class="macro">vec!</span>[<span class="number">3</span>; <span class="number">512</span>];
+<a href=#1680 id=1680 data-nosnippet>1680</a> values.append(<span class="macro">vec!</span>[<span class="number">4</span>; <span class="number">512</span>].as_mut());
+<a href=#1681 id=1681 data-nosnippet>1681</a> <span class="kw">let </span>expected_z = Arc::new(Int64Array::from_iter_values(values)) <span class="kw">as </span>ArrayRef;
+<a href=#1682 id=1682 data-nosnippet>1682</a> <span class="macro">assert_eq!</span>(col, <span class="kw-2">&</span>expected_z);
+<a href=#1683 id=1683 data-nosnippet>1683</a> }
+<a href=#1684 id=1684 data-nosnippet>1684</a>
+<a href=#1685 id=1685 data-nosnippet>1685</a> <span class="attr">#[tokio::test]
+<a href=#1686 id=1686 data-nosnippet>1686</a> </span><span class="kw">async fn </span>test_filter_on_arrow_startswith() {
+<a href=#1687 id=1687 data-nosnippet>1687</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1688 id=1688 data-nosnippet>1688</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1689 id=1689 data-nosnippet>1689</a>
+<a href=#1690 id=1690 data-nosnippet>1690</a> <span class="comment">// Filter: a STARTSWITH "Ice"
+<a href=#1691 id=1691 data-nosnippet>1691</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1692 id=1692 data-nosnippet>1692</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"a"</span>).starts_with(Datum::string(<span class="string">"Ice"</span>));
+<a href=#1693 id=1693 data-nosnippet>1693</a> builder = builder
+<a href=#1694 id=1694 data-nosnippet>1694</a> .with_filter(predicate)
+<a href=#1695 id=1695 data-nosnippet>1695</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1696 id=1696 data-nosnippet>1696</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1697 id=1697 data-nosnippet>1697</a>
+<a href=#1698 id=1698 data-nosnippet>1698</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
<a href=#1699 id=1699 data-nosnippet>1699</a>
-<a href=#1700 id=1700 data-nosnippet>1700</a> <span class="attr">#[tokio::test]
-<a href=#1701 id=1701 data-nosnippet>1701</a> </span><span class="kw">async fn </span>test_filter_on_arrow_in() {
-<a href=#1702 id=1702 data-nosnippet>1702</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1703 id=1703 data-nosnippet>1703</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1704 id=1704 data-nosnippet>1704</a>
-<a href=#1705 id=1705 data-nosnippet>1705</a> <span class="comment">// Filter: a IN ("Sioux", "Iceberg")
-<a href=#1706 id=1706 data-nosnippet>1706</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1707 id=1707 data-nosnippet>1707</a> <span class="kw">let </span>predicate =
-<a href=#1708 id=1708 data-nosnippet>1708</a> Reference::new(<span class="string">"a"</span>).is_in([Datum::string(<span class="string">"Sioux"</span>), Datum::string(<span class="string">"Iceberg"</span>)]);
-<a href=#1709 id=1709 data-nosnippet>1709</a> builder = builder
-<a href=#1710 id=1710 data-nosnippet>1710</a> .with_filter(predicate)
-<a href=#1711 id=1711 data-nosnippet>1711</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1712 id=1712 data-nosnippet>1712</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1700 id=1700 data-nosnippet>1700</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1701 id=1701 data-nosnippet>1701</a>
+<a href=#1702 id=1702 data-nosnippet>1702</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
+<a href=#1703 id=1703 data-nosnippet>1703</a>
+<a href=#1704 id=1704 data-nosnippet>1704</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
+<a href=#1705 id=1705 data-nosnippet>1705</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
+<a href=#1706 id=1706 data-nosnippet>1706</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Iceberg"</span>);
+<a href=#1707 id=1707 data-nosnippet>1707</a> }
+<a href=#1708 id=1708 data-nosnippet>1708</a>
+<a href=#1709 id=1709 data-nosnippet>1709</a> <span class="attr">#[tokio::test]
+<a href=#1710 id=1710 data-nosnippet>1710</a> </span><span class="kw">async fn </span>test_filter_on_arrow_not_startswith() {
+<a href=#1711 id=1711 data-nosnippet>1711</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1712 id=1712 data-nosnippet>1712</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1713 id=1713 data-nosnippet>1713</a>
-<a href=#1714 id=1714 data-nosnippet>1714</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1715 id=1715 data-nosnippet>1715</a>
-<a href=#1716 id=1716 data-nosnippet>1716</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1717 id=1717 data-nosnippet>1717</a>
-<a href=#1718 id=1718 data-nosnippet>1718</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
-<a href=#1719 id=1719 data-nosnippet>1719</a>
-<a href=#1720 id=1720 data-nosnippet>1720</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
-<a href=#1721 id=1721 data-nosnippet>1721</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
-<a href=#1722 id=1722 data-nosnippet>1722</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Iceberg"</span>);
-<a href=#1723 id=1723 data-nosnippet>1723</a> }
-<a href=#1724 id=1724 data-nosnippet>1724</a>
-<a href=#1725 id=1725 data-nosnippet>1725</a> <span class="attr">#[tokio::test]
-<a href=#1726 id=1726 data-nosnippet>1726</a> </span><span class="kw">async fn </span>test_filter_on_arrow_not_in() {
-<a href=#1727 id=1727 data-nosnippet>1727</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1728 id=1728 data-nosnippet>1728</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1729 id=1729 data-nosnippet>1729</a>
-<a href=#1730 id=1730 data-nosnippet>1730</a> <span class="comment">// Filter: a NOT IN ("Sioux", "Iceberg")
-<a href=#1731 id=1731 data-nosnippet>1731</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
-<a href=#1732 id=1732 data-nosnippet>1732</a> <span class="kw">let </span>predicate =
-<a href=#1733 id=1733 data-nosnippet>1733</a> Reference::new(<span class="string">"a"</span>).is_not_in([Datum::string(<span class="string">"Sioux"</span>), Datum::string(<span class="string">"Iceberg"</span>)]);
-<a href=#1734 id=1734 data-nosnippet>1734</a> builder = builder
-<a href=#1735 id=1735 data-nosnippet>1735</a> .with_filter(predicate)
-<a href=#1736 id=1736 data-nosnippet>1736</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
-<a href=#1737 id=1737 data-nosnippet>1737</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
-<a href=#1738 id=1738 data-nosnippet>1738</a>
-<a href=#1739 id=1739 data-nosnippet>1739</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1740 id=1740 data-nosnippet>1740</a>
-<a href=#1741 id=1741 data-nosnippet>1741</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1742 id=1742 data-nosnippet>1742</a>
-<a href=#1743 id=1743 data-nosnippet>1743</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
-<a href=#1744 id=1744 data-nosnippet>1744</a>
-<a href=#1745 id=1745 data-nosnippet>1745</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
-<a href=#1746 id=1746 data-nosnippet>1746</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
-<a href=#1747 id=1747 data-nosnippet>1747</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Apache"</span>);
-<a href=#1748 id=1748 data-nosnippet>1748</a> }
-<a href=#1749 id=1749 data-nosnippet>1749</a>
-<a href=#1750 id=1750 data-nosnippet>1750</a> <span class="attr">#[test]
-<a href=#1751 id=1751 data-nosnippet>1751</a> </span><span class="kw">fn </span>test_file_scan_task_serialize_deserialize() {
-<a href=#1752 id=1752 data-nosnippet>1752</a> <span class="kw">let </span>test_fn = |task: FileScanTask| {
-<a href=#1753 id=1753 data-nosnippet>1753</a> <span class="kw">let </span>serialized = serde_json::to_string(<span class="kw-2">&</span>task).unwrap();
-<a href=#1754 id=1754 data-nosnippet>1754</a> <span class="kw">let </span>deserialized: FileScanTask = serde_json::from_str(<span class="kw-2">&</span>serialized).unwrap();
-<a href=#1755 id=1755 data-nosnippet>1755</a>
-<a href=#1756 id=1756 data-nosnippet>1756</a> <span class="macro">assert_eq!</span>(task.data_file_path, deserialized.data_file_path);
-<a href=#1757 id=1757 data-nosnippet>1757</a> <span class="macro">assert_eq!</span>(task.start, deserialized.start);
-<a href=#1758 id=1758 data-nosnippet>1758</a> <span class="macro">assert_eq!</span>(task.length, deserialized.length);
-<a href=#1759 id=1759 data-nosnippet>1759</a> <span class="macro">assert_eq!</span>(task.project_field_ids, deserialized.project_field_ids);
-<a href=#1760 id=1760 data-nosnippet>1760</a> <span class="macro">assert_eq!</span>(task.predicate, deserialized.predicate);
-<a href=#1761 id=1761 data-nosnippet>1761</a> <span class="macro">assert_eq!</span>(task.schema, deserialized.schema);
-<a href=#1762 id=1762 data-nosnippet>1762</a> };
-<a href=#1763 id=1763 data-nosnippet>1763</a>
-<a href=#1764 id=1764 data-nosnippet>1764</a> <span class="comment">// without predicate
-<a href=#1765 id=1765 data-nosnippet>1765</a> </span><span class="kw">let </span>schema = Arc::new(
-<a href=#1766 id=1766 data-nosnippet>1766</a> Schema::builder()
-<a href=#1767 id=1767 data-nosnippet>1767</a> .with_fields(<span class="macro">vec!</span>[Arc::new(NestedField::required(
-<a href=#1768 id=1768 data-nosnippet>1768</a> <span class="number">1</span>,
-<a href=#1769 id=1769 data-nosnippet>1769</a> <span class="string">"x"</span>,
-<a href=#1770 id=1770 data-nosnippet>1770</a> Type::Primitive(PrimitiveType::Binary),
-<a href=#1771 id=1771 data-nosnippet>1771</a> ))])
-<a href=#1772 id=1772 data-nosnippet>1772</a> .build()
-<a href=#1773 id=1773 data-nosnippet>1773</a> .unwrap(),
-<a href=#1774 id=1774 data-nosnippet>1774</a> );
-<a href=#1775 id=1775 data-nosnippet>1775</a> <span class="kw">let </span>task = FileScanTask {
-<a href=#1776 id=1776 data-nosnippet>1776</a> data_file_path: <span class="string">"data_file_path"</span>.to_string(),
-<a href=#1777 id=1777 data-nosnippet>1777</a> file_size_in_bytes: <span class="number">0</span>,
-<a href=#1778 id=1778 data-nosnippet>1778</a> start: <span class="number">0</span>,
-<a href=#1779 id=1779 data-nosnippet>1779</a> length: <span class="number">100</span>,
-<a href=#1780 id=1780 data-nosnippet>1780</a> project_field_ids: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
-<a href=#1781 id=1781 data-nosnippet>1781</a> predicate: <span class="prelude-val">None</span>,
-<a href=#1782 id=1782 data-nosnippet>1782</a> schema: schema.clone(),
-<a href=#1783 id=1783 data-nosnippet>1783</a> record_count: <span class="prelude-val">Some</span>(<span class="number">100</span>),
-<a href=#1784 id=1784 data-nosnippet>1784</a> data_file_format: DataFileFormat::Parquet,
-<a href=#1785 id=1785 data-nosnippet>1785</a> deletes: <span class="macro">vec!</span>[],
-<a href=#1786 id=1786 data-nosnippet>1786</a> partition: <span class="prelude-val">None</span>,
-<a href=#1787 id=1787 data-nosnippet>1787</a> partition_spec: <span class="prelude-val">None</span>,
-<a href=#1788 id=1788 data-nosnippet>1788</a> name_mapping: <span class="prelude-val">None</span>,
-<a href=#1789 id=1789 data-nosnippet>1789</a> case_sensitive: <span class="bool-val">false</span>,
-<a href=#1790 id=1790 data-nosnippet>1790</a> };
-<a href=#1791 id=1791 data-nosnippet>1791</a> test_fn(task);
-<a href=#1792 id=1792 data-nosnippet>1792</a>
-<a href=#1793 id=1793 data-nosnippet>1793</a> <span class="comment">// with predicate
-<a href=#1794 id=1794 data-nosnippet>1794</a> </span><span class="kw">let </span>task = FileScanTask {
-<a href=#1795 id=1795 data-nosnippet>1795</a> data_file_path: <span class="string">"data_file_path"</span>.to_string(),
-<a href=#1796 id=1796 data-nosnippet>1796</a> file_size_in_bytes: <span class="number">0</span>,
-<a href=#1797 id=1797 data-nosnippet>1797</a> start: <span class="number">0</span>,
-<a href=#1798 id=1798 data-nosnippet>1798</a> length: <span class="number">100</span>,
-<a href=#1799 id=1799 data-nosnippet>1799</a> project_field_ids: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
-<a href=#1800 id=1800 data-nosnippet>1800</a> predicate: <span class="prelude-val">Some</span>(BoundPredicate::AlwaysTrue),
-<a href=#1801 id=1801 data-nosnippet>1801</a> schema,
-<a href=#1802 id=1802 data-nosnippet>1802</a> record_count: <span class="prelude-val">None</span>,
-<a href=#1803 id=1803 data-nosnippet>1803</a> data_file_format: DataFileFormat::Avro,
-<a href=#1804 id=1804 data-nosnippet>1804</a> deletes: <span class="macro">vec!</span>[],
-<a href=#1805 id=1805 data-nosnippet>1805</a> partition: <span class="prelude-val">None</span>,
-<a href=#1806 id=1806 data-nosnippet>1806</a> partition_spec: <span class="prelude-val">None</span>,
-<a href=#1807 id=1807 data-nosnippet>1807</a> name_mapping: <span class="prelude-val">None</span>,
-<a href=#1808 id=1808 data-nosnippet>1808</a> case_sensitive: <span class="bool-val">false</span>,
-<a href=#1809 id=1809 data-nosnippet>1809</a> };
-<a href=#1810 id=1810 data-nosnippet>1810</a> test_fn(task);
-<a href=#1811 id=1811 data-nosnippet>1811</a> }
-<a href=#1812 id=1812 data-nosnippet>1812</a>
-<a href=#1813 id=1813 data-nosnippet>1813</a> <span class="attr">#[tokio::test]
-<a href=#1814 id=1814 data-nosnippet>1814</a> </span><span class="kw">async fn </span>test_select_with_file_column() {
-<a href=#1815 id=1815 data-nosnippet>1815</a> <span class="kw">use </span>arrow_array::cast::AsArray;
-<a href=#1816 id=1816 data-nosnippet>1816</a>
-<a href=#1817 id=1817 data-nosnippet>1817</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1818 id=1818 data-nosnippet>1818</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1819 id=1819 data-nosnippet>1819</a>
-<a href=#1820 id=1820 data-nosnippet>1820</a> <span class="comment">// Select regular columns plus the _file column
-<a href=#1821 id=1821 data-nosnippet>1821</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1822 id=1822 data-nosnippet>1822</a> .table
-<a href=#1823 id=1823 data-nosnippet>1823</a> .scan()
-<a href=#1824 id=1824 data-nosnippet>1824</a> .select([<span class="string">"x"</span>, RESERVED_COL_NAME_FILE])
-<a href=#1825 id=1825 data-nosnippet>1825</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1826 id=1826 data-nosnippet>1826</a> .build()
-<a href=#1827 id=1827 data-nosnippet>1827</a> .unwrap();
-<a href=#1828 id=1828 data-nosnippet>1828</a>
-<a href=#1829 id=1829 data-nosnippet>1829</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1830 id=1830 data-nosnippet>1830</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1831 id=1831 data-nosnippet>1831</a>
-<a href=#1832 id=1832 data-nosnippet>1832</a> <span class="comment">// Verify we have 2 columns: x and _file
-<a href=#1833 id=1833 data-nosnippet>1833</a> </span><span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">2</span>);
-<a href=#1834 id=1834 data-nosnippet>1834</a>
-<a href=#1835 id=1835 data-nosnippet>1835</a> <span class="comment">// Verify the x column exists and has correct data
-<a href=#1836 id=1836 data-nosnippet>1836</a> </span><span class="kw">let </span>x_col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
-<a href=#1837 id=1837 data-nosnippet>1837</a> <span class="kw">let </span>x_arr = x_col.as_primitive::<arrow_array::types::Int64Type>();
-<a href=#1838 id=1838 data-nosnippet>1838</a> <span class="macro">assert_eq!</span>(x_arr.value(<span class="number">0</span>), <span class="number">1</span>);
-<a href=#1839 id=1839 data-nosnippet>1839</a>
-<a href=#1840 id=1840 data-nosnippet>1840</a> <span class="comment">// Verify the _file column exists
-<a href=#1841 id=1841 data-nosnippet>1841</a> </span><span class="kw">let </span>file_col = batches[<span class="number">0</span>].column_by_name(RESERVED_COL_NAME_FILE);
-<a href=#1842 id=1842 data-nosnippet>1842</a> <span class="macro">assert!</span>(
-<a href=#1843 id=1843 data-nosnippet>1843</a> file_col.is_some(),
-<a href=#1844 id=1844 data-nosnippet>1844</a> <span class="string">"_file column should be present in the batch"
-<a href=#1845 id=1845 data-nosnippet>1845</a> </span>);
-<a href=#1846 id=1846 data-nosnippet>1846</a>
-<a href=#1847 id=1847 data-nosnippet>1847</a> <span class="comment">// Verify the _file column contains a file path
-<a href=#1848 id=1848 data-nosnippet>1848</a> </span><span class="kw">let </span>file_col = file_col.unwrap();
-<a href=#1849 id=1849 data-nosnippet>1849</a> <span class="macro">assert!</span>(
-<a href=#1850 id=1850 data-nosnippet>1850</a> <span class="macro">matches!</span>(
-<a href=#1851 id=1851 data-nosnippet>1851</a> file_col.data_type(),
-<a href=#1852 id=1852 data-nosnippet>1852</a> arrow_schema::DataType::RunEndEncoded(<span class="kw">_</span>, <span class="kw">_</span>)
-<a href=#1853 id=1853 data-nosnippet>1853</a> ),
-<a href=#1854 id=1854 data-nosnippet>1854</a> <span class="string">"_file column should use RunEndEncoded type"
-<a href=#1855 id=1855 data-nosnippet>1855</a> </span>);
-<a href=#1856 id=1856 data-nosnippet>1856</a>
-<a href=#1857 id=1857 data-nosnippet>1857</a> <span class="comment">// Decode the RunArray to verify it contains the file path
-<a href=#1858 id=1858 data-nosnippet>1858</a> </span><span class="kw">let </span>run_array = file_col
-<a href=#1859 id=1859 data-nosnippet>1859</a> .as_any()
-<a href=#1860 id=1860 data-nosnippet>1860</a> .downcast_ref::<arrow_array::RunArray<arrow_array::types::Int32Type>>()
-<a href=#1861 id=1861 data-nosnippet>1861</a> .expect(<span class="string">"_file column should be a RunArray"</span>);
-<a href=#1862 id=1862 data-nosnippet>1862</a>
-<a href=#1863 id=1863 data-nosnippet>1863</a> <span class="kw">let </span>values = run_array.values();
-<a href=#1864 id=1864 data-nosnippet>1864</a> <span class="kw">let </span>string_values = values.as_string::<i32>();
-<a href=#1865 id=1865 data-nosnippet>1865</a> <span class="macro">assert_eq!</span>(string_values.len(), <span class="number">1</span>, <span class="string">"Should have a single file path"</span>);
-<a href=#1866 id=1866 data-nosnippet>1866</a>
-<a href=#1867 id=1867 data-nosnippet>1867</a> <span class="kw">let </span>file_path = string_values.value(<span class="number">0</span>);
-<a href=#1868 id=1868 data-nosnippet>1868</a> <span class="macro">assert!</span>(
-<a href=#1869 id=1869 data-nosnippet>1869</a> file_path.ends_with(<span class="string">".parquet"</span>),
-<a href=#1870 id=1870 data-nosnippet>1870</a> <span class="string">"File path should end with .parquet, got: {file_path}"
-<a href=#1871 id=1871 data-nosnippet>1871</a> </span>);
-<a href=#1872 id=1872 data-nosnippet>1872</a> }
-<a href=#1873 id=1873 data-nosnippet>1873</a>
-<a href=#1874 id=1874 data-nosnippet>1874</a> <span class="attr">#[tokio::test]
-<a href=#1875 id=1875 data-nosnippet>1875</a> </span><span class="kw">async fn </span>test_select_file_column_position() {
-<a href=#1876 id=1876 data-nosnippet>1876</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1877 id=1877 data-nosnippet>1877</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1878 id=1878 data-nosnippet>1878</a>
-<a href=#1879 id=1879 data-nosnippet>1879</a> <span class="comment">// Select columns in specific order: x, _file, z
-<a href=#1880 id=1880 data-nosnippet>1880</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1881 id=1881 data-nosnippet>1881</a> .table
-<a href=#1882 id=1882 data-nosnippet>1882</a> .scan()
-<a href=#1883 id=1883 data-nosnippet>1883</a> .select([<span class="string">"x"</span>, RESERVED_COL_NAME_FILE, <span class="string">"z"</span>])
-<a href=#1884 id=1884 data-nosnippet>1884</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1885 id=1885 data-nosnippet>1885</a> .build()
-<a href=#1886 id=1886 data-nosnippet>1886</a> .unwrap();
-<a href=#1887 id=1887 data-nosnippet>1887</a>
-<a href=#1888 id=1888 data-nosnippet>1888</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1889 id=1889 data-nosnippet>1889</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1890 id=1890 data-nosnippet>1890</a>
-<a href=#1891 id=1891 data-nosnippet>1891</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">3</span>);
-<a href=#1892 id=1892 data-nosnippet>1892</a>
-<a href=#1893 id=1893 data-nosnippet>1893</a> <span class="comment">// Verify column order: x at position 0, _file at position 1, z at position 2
-<a href=#1894 id=1894 data-nosnippet>1894</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
-<a href=#1895 id=1895 data-nosnippet>1895</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), <span class="string">"x"</span>);
-<a href=#1896 id=1896 data-nosnippet>1896</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">1</span>).name(), RESERVED_COL_NAME_FILE);
-<a href=#1897 id=1897 data-nosnippet>1897</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">2</span>).name(), <span class="string">"z"</span>);
-<a href=#1898 id=1898 data-nosnippet>1898</a>
-<a href=#1899 id=1899 data-nosnippet>1899</a> <span class="comment">// Verify columns by name also works
-<a href=#1900 id=1900 data-nosnippet>1900</a> </span><span class="macro">assert!</span>(batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).is_some());
-<a href=#1901 id=1901 data-nosnippet>1901</a> <span class="macro">assert!</span>(batches[<span class="number">0</span>].column_by_name(RESERVED_COL_NAME_FILE).is_some());
-<a href=#1902 id=1902 data-nosnippet>1902</a> <span class="macro">assert!</span>(batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).is_some());
-<a href=#1903 id=1903 data-nosnippet>1903</a> }
-<a href=#1904 id=1904 data-nosnippet>1904</a>
-<a href=#1905 id=1905 data-nosnippet>1905</a> <span class="attr">#[tokio::test]
-<a href=#1906 id=1906 data-nosnippet>1906</a> </span><span class="kw">async fn </span>test_select_file_column_only() {
-<a href=#1907 id=1907 data-nosnippet>1907</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1908 id=1908 data-nosnippet>1908</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#1909 id=1909 data-nosnippet>1909</a>
-<a href=#1910 id=1910 data-nosnippet>1910</a> <span class="comment">// Select only the _file column
-<a href=#1911 id=1911 data-nosnippet>1911</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1912 id=1912 data-nosnippet>1912</a> .table
-<a href=#1913 id=1913 data-nosnippet>1913</a> .scan()
-<a href=#1914 id=1914 data-nosnippet>1914</a> .select([RESERVED_COL_NAME_FILE])
-<a href=#1915 id=1915 data-nosnippet>1915</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1916 id=1916 data-nosnippet>1916</a> .build()
-<a href=#1917 id=1917 data-nosnippet>1917</a> .unwrap();
-<a href=#1918 id=1918 data-nosnippet>1918</a>
-<a href=#1919 id=1919 data-nosnippet>1919</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1920 id=1920 data-nosnippet>1920</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1921 id=1921 data-nosnippet>1921</a>
-<a href=#1922 id=1922 data-nosnippet>1922</a> <span class="comment">// Should have exactly 1 column
-<a href=#1923 id=1923 data-nosnippet>1923</a> </span><span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">1</span>);
-<a href=#1924 id=1924 data-nosnippet>1924</a>
-<a href=#1925 id=1925 data-nosnippet>1925</a> <span class="comment">// Verify it's the _file column
-<a href=#1926 id=1926 data-nosnippet>1926</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
-<a href=#1927 id=1927 data-nosnippet>1927</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), RESERVED_COL_NAME_FILE);
-<a href=#1928 id=1928 data-nosnippet>1928</a>
-<a href=#1929 id=1929 data-nosnippet>1929</a> <span class="comment">// Verify the batch has the correct number of rows
-<a href=#1930 id=1930 data-nosnippet>1930</a> // The scan reads files 1.parquet and 3.parquet (2.parquet is deleted)
-<a href=#1931 id=1931 data-nosnippet>1931</a> // Each file has 1024 rows, so total is 2048 rows
-<a href=#1932 id=1932 data-nosnippet>1932</a> </span><span class="kw">let </span>total_rows: usize = batches.iter().map(|b| b.num_rows()).sum();
-<a href=#1933 id=1933 data-nosnippet>1933</a> <span class="macro">assert_eq!</span>(total_rows, <span class="number">2048</span>);
-<a href=#1934 id=1934 data-nosnippet>1934</a> }
-<a href=#1935 id=1935 data-nosnippet>1935</a>
-<a href=#1936 id=1936 data-nosnippet>1936</a> <span class="attr">#[tokio::test]
-<a href=#1937 id=1937 data-nosnippet>1937</a> </span><span class="kw">async fn </span>test_file_column_with_multiple_files() {
-<a href=#1938 id=1938 data-nosnippet>1938</a> <span class="kw">use </span>std::collections::HashSet;
-<a href=#1939 id=1939 data-nosnippet>1939</a>
+<a href=#1714 id=1714 data-nosnippet>1714</a> <span class="comment">// Filter: a NOT STARTSWITH "Ice"
+<a href=#1715 id=1715 data-nosnippet>1715</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1716 id=1716 data-nosnippet>1716</a> <span class="kw">let </span>predicate = Reference::new(<span class="string">"a"</span>).not_starts_with(Datum::string(<span class="string">"Ice"</span>));
+<a href=#1717 id=1717 data-nosnippet>1717</a> builder = builder
+<a href=#1718 id=1718 data-nosnippet>1718</a> .with_filter(predicate)
+<a href=#1719 id=1719 data-nosnippet>1719</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1720 id=1720 data-nosnippet>1720</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1721 id=1721 data-nosnippet>1721</a>
+<a href=#1722 id=1722 data-nosnippet>1722</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1723 id=1723 data-nosnippet>1723</a>
+<a href=#1724 id=1724 data-nosnippet>1724</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1725 id=1725 data-nosnippet>1725</a>
+<a href=#1726 id=1726 data-nosnippet>1726</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
+<a href=#1727 id=1727 data-nosnippet>1727</a>
+<a href=#1728 id=1728 data-nosnippet>1728</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
+<a href=#1729 id=1729 data-nosnippet>1729</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
+<a href=#1730 id=1730 data-nosnippet>1730</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Apache"</span>);
+<a href=#1731 id=1731 data-nosnippet>1731</a> }
+<a href=#1732 id=1732 data-nosnippet>1732</a>
+<a href=#1733 id=1733 data-nosnippet>1733</a> <span class="attr">#[tokio::test]
+<a href=#1734 id=1734 data-nosnippet>1734</a> </span><span class="kw">async fn </span>test_filter_on_arrow_in() {
+<a href=#1735 id=1735 data-nosnippet>1735</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1736 id=1736 data-nosnippet>1736</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1737 id=1737 data-nosnippet>1737</a>
+<a href=#1738 id=1738 data-nosnippet>1738</a> <span class="comment">// Filter: a IN ("Sioux", "Iceberg")
+<a href=#1739 id=1739 data-nosnippet>1739</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1740 id=1740 data-nosnippet>1740</a> <span class="kw">let </span>predicate =
+<a href=#1741 id=1741 data-nosnippet>1741</a> Reference::new(<span class="string">"a"</span>).is_in([Datum::string(<span class="string">"Sioux"</span>), Datum::string(<span class="string">"Iceberg"</span>)]);
+<a href=#1742 id=1742 data-nosnippet>1742</a> builder = builder
+<a href=#1743 id=1743 data-nosnippet>1743</a> .with_filter(predicate)
+<a href=#1744 id=1744 data-nosnippet>1744</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1745 id=1745 data-nosnippet>1745</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1746 id=1746 data-nosnippet>1746</a>
+<a href=#1747 id=1747 data-nosnippet>1747</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1748 id=1748 data-nosnippet>1748</a>
+<a href=#1749 id=1749 data-nosnippet>1749</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1750 id=1750 data-nosnippet>1750</a>
+<a href=#1751 id=1751 data-nosnippet>1751</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
+<a href=#1752 id=1752 data-nosnippet>1752</a>
+<a href=#1753 id=1753 data-nosnippet>1753</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
+<a href=#1754 id=1754 data-nosnippet>1754</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
+<a href=#1755 id=1755 data-nosnippet>1755</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Iceberg"</span>);
+<a href=#1756 id=1756 data-nosnippet>1756</a> }
+<a href=#1757 id=1757 data-nosnippet>1757</a>
+<a href=#1758 id=1758 data-nosnippet>1758</a> <span class="attr">#[tokio::test]
+<a href=#1759 id=1759 data-nosnippet>1759</a> </span><span class="kw">async fn </span>test_filter_on_arrow_not_in() {
+<a href=#1760 id=1760 data-nosnippet>1760</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1761 id=1761 data-nosnippet>1761</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1762 id=1762 data-nosnippet>1762</a>
+<a href=#1763 id=1763 data-nosnippet>1763</a> <span class="comment">// Filter: a NOT IN ("Sioux", "Iceberg")
+<a href=#1764 id=1764 data-nosnippet>1764</a> </span><span class="kw">let </span><span class="kw-2">mut </span>builder = fixture.table.scan();
+<a href=#1765 id=1765 data-nosnippet>1765</a> <span class="kw">let </span>predicate =
+<a href=#1766 id=1766 data-nosnippet>1766</a> Reference::new(<span class="string">"a"</span>).is_not_in([Datum::string(<span class="string">"Sioux"</span>), Datum::string(<span class="string">"Iceberg"</span>)]);
+<a href=#1767 id=1767 data-nosnippet>1767</a> builder = builder
+<a href=#1768 id=1768 data-nosnippet>1768</a> .with_filter(predicate)
+<a href=#1769 id=1769 data-nosnippet>1769</a> .with_row_selection_enabled(<span class="bool-val">true</span>);
+<a href=#1770 id=1770 data-nosnippet>1770</a> <span class="kw">let </span>table_scan = builder.build().unwrap();
+<a href=#1771 id=1771 data-nosnippet>1771</a>
+<a href=#1772 id=1772 data-nosnippet>1772</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1773 id=1773 data-nosnippet>1773</a>
+<a href=#1774 id=1774 data-nosnippet>1774</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1775 id=1775 data-nosnippet>1775</a>
+<a href=#1776 id=1776 data-nosnippet>1776</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_rows(), <span class="number">512</span>);
+<a href=#1777 id=1777 data-nosnippet>1777</a>
+<a href=#1778 id=1778 data-nosnippet>1778</a> <span class="kw">let </span>col = batches[<span class="number">0</span>].column_by_name(<span class="string">"a"</span>).unwrap();
+<a href=#1779 id=1779 data-nosnippet>1779</a> <span class="kw">let </span>string_arr = col.as_any().downcast_ref::<StringArray>().unwrap();
+<a href=#1780 id=1780 data-nosnippet>1780</a> <span class="macro">assert_eq!</span>(string_arr.value(<span class="number">0</span>), <span class="string">"Apache"</span>);
+<a href=#1781 id=1781 data-nosnippet>1781</a> }
+<a href=#1782 id=1782 data-nosnippet>1782</a>
+<a href=#1783 id=1783 data-nosnippet>1783</a> <span class="attr">#[test]
+<a href=#1784 id=1784 data-nosnippet>1784</a> </span><span class="kw">fn </span>test_file_scan_task_serialize_deserialize() {
+<a href=#1785 id=1785 data-nosnippet>1785</a> <span class="kw">let </span>test_fn = |task: FileScanTask| {
+<a href=#1786 id=1786 data-nosnippet>1786</a> <span class="kw">let </span>serialized = serde_json::to_string(<span class="kw-2">&</span>task).unwrap();
+<a href=#1787 id=1787 data-nosnippet>1787</a> <span class="kw">let </span>deserialized: FileScanTask = serde_json::from_str(<span class="kw-2">&</span>serialized).unwrap();
+<a href=#1788 id=1788 data-nosnippet>1788</a>
+<a href=#1789 id=1789 data-nosnippet>1789</a> <span class="macro">assert_eq!</span>(task.data_file_path, deserialized.data_file_path);
+<a href=#1790 id=1790 data-nosnippet>1790</a> <span class="macro">assert_eq!</span>(task.start, deserialized.start);
+<a href=#1791 id=1791 data-nosnippet>1791</a> <span class="macro">assert_eq!</span>(task.length, deserialized.length);
+<a href=#1792 id=1792 data-nosnippet>1792</a> <span class="macro">assert_eq!</span>(task.project_field_ids, deserialized.project_field_ids);
+<a href=#1793 id=1793 data-nosnippet>1793</a> <span class="macro">assert_eq!</span>(task.predicate, deserialized.predicate);
+<a href=#1794 id=1794 data-nosnippet>1794</a> <span class="macro">assert_eq!</span>(task.schema, deserialized.schema);
+<a href=#1795 id=1795 data-nosnippet>1795</a> };
+<a href=#1796 id=1796 data-nosnippet>1796</a>
+<a href=#1797 id=1797 data-nosnippet>1797</a> <span class="comment">// without predicate
+<a href=#1798 id=1798 data-nosnippet>1798</a> </span><span class="kw">let </span>schema = Arc::new(
+<a href=#1799 id=1799 data-nosnippet>1799</a> Schema::builder()
+<a href=#1800 id=1800 data-nosnippet>1800</a> .with_fields(<span class="macro">vec!</span>[Arc::new(NestedField::required(
+<a href=#1801 id=1801 data-nosnippet>1801</a> <span class="number">1</span>,
+<a href=#1802 id=1802 data-nosnippet>1802</a> <span class="string">"x"</span>,
+<a href=#1803 id=1803 data-nosnippet>1803</a> Type::Primitive(PrimitiveType::Binary),
+<a href=#1804 id=1804 data-nosnippet>1804</a> ))])
+<a href=#1805 id=1805 data-nosnippet>1805</a> .build()
+<a href=#1806 id=1806 data-nosnippet>1806</a> .unwrap(),
+<a href=#1807 id=1807 data-nosnippet>1807</a> );
+<a href=#1808 id=1808 data-nosnippet>1808</a> <span class="kw">let </span>task = FileScanTask {
+<a href=#1809 id=1809 data-nosnippet>1809</a> data_file_path: <span class="string">"data_file_path"</span>.to_string(),
+<a href=#1810 id=1810 data-nosnippet>1810</a> file_size_in_bytes: <span class="number">0</span>,
+<a href=#1811 id=1811 data-nosnippet>1811</a> start: <span class="number">0</span>,
+<a href=#1812 id=1812 data-nosnippet>1812</a> length: <span class="number">100</span>,
+<a href=#1813 id=1813 data-nosnippet>1813</a> project_field_ids: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
+<a href=#1814 id=1814 data-nosnippet>1814</a> predicate: <span class="prelude-val">None</span>,
+<a href=#1815 id=1815 data-nosnippet>1815</a> schema: schema.clone(),
+<a href=#1816 id=1816 data-nosnippet>1816</a> record_count: <span class="prelude-val">Some</span>(<span class="number">100</span>),
+<a href=#1817 id=1817 data-nosnippet>1817</a> data_file_format: DataFileFormat::Parquet,
+<a href=#1818 id=1818 data-nosnippet>1818</a> deletes: <span class="macro">vec!</span>[],
+<a href=#1819 id=1819 data-nosnippet>1819</a> partition: <span class="prelude-val">None</span>,
+<a href=#1820 id=1820 data-nosnippet>1820</a> partition_spec: <span class="prelude-val">None</span>,
+<a href=#1821 id=1821 data-nosnippet>1821</a> name_mapping: <span class="prelude-val">None</span>,
+<a href=#1822 id=1822 data-nosnippet>1822</a> case_sensitive: <span class="bool-val">false</span>,
+<a href=#1823 id=1823 data-nosnippet>1823</a> };
+<a href=#1824 id=1824 data-nosnippet>1824</a> test_fn(task);
+<a href=#1825 id=1825 data-nosnippet>1825</a>
+<a href=#1826 id=1826 data-nosnippet>1826</a> <span class="comment">// with predicate
+<a href=#1827 id=1827 data-nosnippet>1827</a> </span><span class="kw">let </span>task = FileScanTask {
+<a href=#1828 id=1828 data-nosnippet>1828</a> data_file_path: <span class="string">"data_file_path"</span>.to_string(),
+<a href=#1829 id=1829 data-nosnippet>1829</a> file_size_in_bytes: <span class="number">0</span>,
+<a href=#1830 id=1830 data-nosnippet>1830</a> start: <span class="number">0</span>,
+<a href=#1831 id=1831 data-nosnippet>1831</a> length: <span class="number">100</span>,
+<a href=#1832 id=1832 data-nosnippet>1832</a> project_field_ids: <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>],
+<a href=#1833 id=1833 data-nosnippet>1833</a> predicate: <span class="prelude-val">Some</span>(BoundPredicate::AlwaysTrue),
+<a href=#1834 id=1834 data-nosnippet>1834</a> schema,
+<a href=#1835 id=1835 data-nosnippet>1835</a> record_count: <span class="prelude-val">None</span>,
+<a href=#1836 id=1836 data-nosnippet>1836</a> data_file_format: DataFileFormat::Avro,
+<a href=#1837 id=1837 data-nosnippet>1837</a> deletes: <span class="macro">vec!</span>[],
+<a href=#1838 id=1838 data-nosnippet>1838</a> partition: <span class="prelude-val">None</span>,
+<a href=#1839 id=1839 data-nosnippet>1839</a> partition_spec: <span class="prelude-val">None</span>,
+<a href=#1840 id=1840 data-nosnippet>1840</a> name_mapping: <span class="prelude-val">None</span>,
+<a href=#1841 id=1841 data-nosnippet>1841</a> case_sensitive: <span class="bool-val">false</span>,
+<a href=#1842 id=1842 data-nosnippet>1842</a> };
+<a href=#1843 id=1843 data-nosnippet>1843</a> test_fn(task);
+<a href=#1844 id=1844 data-nosnippet>1844</a> }
+<a href=#1845 id=1845 data-nosnippet>1845</a>
+<a href=#1846 id=1846 data-nosnippet>1846</a> <span class="attr">#[tokio::test]
+<a href=#1847 id=1847 data-nosnippet>1847</a> </span><span class="kw">async fn </span>test_select_with_file_column() {
+<a href=#1848 id=1848 data-nosnippet>1848</a> <span class="kw">use </span>arrow_array::cast::AsArray;
+<a href=#1849 id=1849 data-nosnippet>1849</a>
+<a href=#1850 id=1850 data-nosnippet>1850</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1851 id=1851 data-nosnippet>1851</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1852 id=1852 data-nosnippet>1852</a>
+<a href=#1853 id=1853 data-nosnippet>1853</a> <span class="comment">// Select regular columns plus the _file column
+<a href=#1854 id=1854 data-nosnippet>1854</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1855 id=1855 data-nosnippet>1855</a> .table
+<a href=#1856 id=1856 data-nosnippet>1856</a> .scan()
+<a href=#1857 id=1857 data-nosnippet>1857</a> .select([<span class="string">"x"</span>, RESERVED_COL_NAME_FILE])
+<a href=#1858 id=1858 data-nosnippet>1858</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1859 id=1859 data-nosnippet>1859</a> .build()
+<a href=#1860 id=1860 data-nosnippet>1860</a> .unwrap();
+<a href=#1861 id=1861 data-nosnippet>1861</a>
+<a href=#1862 id=1862 data-nosnippet>1862</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1863 id=1863 data-nosnippet>1863</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1864 id=1864 data-nosnippet>1864</a>
+<a href=#1865 id=1865 data-nosnippet>1865</a> <span class="comment">// Verify we have 2 columns: x and _file
+<a href=#1866 id=1866 data-nosnippet>1866</a> </span><span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">2</span>);
+<a href=#1867 id=1867 data-nosnippet>1867</a>
+<a href=#1868 id=1868 data-nosnippet>1868</a> <span class="comment">// Verify the x column exists and has correct data
+<a href=#1869 id=1869 data-nosnippet>1869</a> </span><span class="kw">let </span>x_col = batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).unwrap();
+<a href=#1870 id=1870 data-nosnippet>1870</a> <span class="kw">let </span>x_arr = x_col.as_primitive::<arrow_array::types::Int64Type>();
+<a href=#1871 id=1871 data-nosnippet>1871</a> <span class="macro">assert_eq!</span>(x_arr.value(<span class="number">0</span>), <span class="number">1</span>);
+<a href=#1872 id=1872 data-nosnippet>1872</a>
+<a href=#1873 id=1873 data-nosnippet>1873</a> <span class="comment">// Verify the _file column exists
+<a href=#1874 id=1874 data-nosnippet>1874</a> </span><span class="kw">let </span>file_col = batches[<span class="number">0</span>].column_by_name(RESERVED_COL_NAME_FILE);
+<a href=#1875 id=1875 data-nosnippet>1875</a> <span class="macro">assert!</span>(
+<a href=#1876 id=1876 data-nosnippet>1876</a> file_col.is_some(),
+<a href=#1877 id=1877 data-nosnippet>1877</a> <span class="string">"_file column should be present in the batch"
+<a href=#1878 id=1878 data-nosnippet>1878</a> </span>);
+<a href=#1879 id=1879 data-nosnippet>1879</a>
+<a href=#1880 id=1880 data-nosnippet>1880</a> <span class="comment">// Verify the _file column contains a file path
+<a href=#1881 id=1881 data-nosnippet>1881</a> </span><span class="kw">let </span>file_col = file_col.unwrap();
+<a href=#1882 id=1882 data-nosnippet>1882</a> <span class="macro">assert!</span>(
+<a href=#1883 id=1883 data-nosnippet>1883</a> <span class="macro">matches!</span>(
+<a href=#1884 id=1884 data-nosnippet>1884</a> file_col.data_type(),
+<a href=#1885 id=1885 data-nosnippet>1885</a> arrow_schema::DataType::RunEndEncoded(<span class="kw">_</span>, <span class="kw">_</span>)
+<a href=#1886 id=1886 data-nosnippet>1886</a> ),
+<a href=#1887 id=1887 data-nosnippet>1887</a> <span class="string">"_file column should use RunEndEncoded type"
+<a href=#1888 id=1888 data-nosnippet>1888</a> </span>);
+<a href=#1889 id=1889 data-nosnippet>1889</a>
+<a href=#1890 id=1890 data-nosnippet>1890</a> <span class="comment">// Decode the RunArray to verify it contains the file path
+<a href=#1891 id=1891 data-nosnippet>1891</a> </span><span class="kw">let </span>run_array = file_col
+<a href=#1892 id=1892 data-nosnippet>1892</a> .as_any()
+<a href=#1893 id=1893 data-nosnippet>1893</a> .downcast_ref::<arrow_array::RunArray<arrow_array::types::Int32Type>>()
+<a href=#1894 id=1894 data-nosnippet>1894</a> .expect(<span class="string">"_file column should be a RunArray"</span>);
+<a href=#1895 id=1895 data-nosnippet>1895</a>
+<a href=#1896 id=1896 data-nosnippet>1896</a> <span class="kw">let </span>values = run_array.values();
+<a href=#1897 id=1897 data-nosnippet>1897</a> <span class="kw">let </span>string_values = values.as_string::<i32>();
+<a href=#1898 id=1898 data-nosnippet>1898</a> <span class="macro">assert_eq!</span>(string_values.len(), <span class="number">1</span>, <span class="string">"Should have a single file path"</span>);
+<a href=#1899 id=1899 data-nosnippet>1899</a>
+<a href=#1900 id=1900 data-nosnippet>1900</a> <span class="kw">let </span>file_path = string_values.value(<span class="number">0</span>);
+<a href=#1901 id=1901 data-nosnippet>1901</a> <span class="macro">assert!</span>(
+<a href=#1902 id=1902 data-nosnippet>1902</a> file_path.ends_with(<span class="string">".parquet"</span>),
+<a href=#1903 id=1903 data-nosnippet>1903</a> <span class="string">"File path should end with .parquet, got: {file_path}"
+<a href=#1904 id=1904 data-nosnippet>1904</a> </span>);
+<a href=#1905 id=1905 data-nosnippet>1905</a> }
+<a href=#1906 id=1906 data-nosnippet>1906</a>
+<a href=#1907 id=1907 data-nosnippet>1907</a> <span class="attr">#[tokio::test]
+<a href=#1908 id=1908 data-nosnippet>1908</a> </span><span class="kw">async fn </span>test_select_file_column_position() {
+<a href=#1909 id=1909 data-nosnippet>1909</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1910 id=1910 data-nosnippet>1910</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1911 id=1911 data-nosnippet>1911</a>
+<a href=#1912 id=1912 data-nosnippet>1912</a> <span class="comment">// Select columns in specific order: x, _file, z
+<a href=#1913 id=1913 data-nosnippet>1913</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1914 id=1914 data-nosnippet>1914</a> .table
+<a href=#1915 id=1915 data-nosnippet>1915</a> .scan()
+<a href=#1916 id=1916 data-nosnippet>1916</a> .select([<span class="string">"x"</span>, RESERVED_COL_NAME_FILE, <span class="string">"z"</span>])
+<a href=#1917 id=1917 data-nosnippet>1917</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1918 id=1918 data-nosnippet>1918</a> .build()
+<a href=#1919 id=1919 data-nosnippet>1919</a> .unwrap();
+<a href=#1920 id=1920 data-nosnippet>1920</a>
+<a href=#1921 id=1921 data-nosnippet>1921</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1922 id=1922 data-nosnippet>1922</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#1923 id=1923 data-nosnippet>1923</a>
+<a href=#1924 id=1924 data-nosnippet>1924</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">3</span>);
+<a href=#1925 id=1925 data-nosnippet>1925</a>
+<a href=#1926 id=1926 data-nosnippet>1926</a> <span class="comment">// Verify column order: x at position 0, _file at position 1, z at position 2
+<a href=#1927 id=1927 data-nosnippet>1927</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
+<a href=#1928 id=1928 data-nosnippet>1928</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), <span class="string">"x"</span>);
+<a href=#1929 id=1929 data-nosnippet>1929</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">1</span>).name(), RESERVED_COL_NAME_FILE);
+<a href=#1930 id=1930 data-nosnippet>1930</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">2</span>).name(), <span class="string">"z"</span>);
+<a href=#1931 id=1931 data-nosnippet>1931</a>
+<a href=#1932 id=1932 data-nosnippet>1932</a> <span class="comment">// Verify columns by name also works
+<a href=#1933 id=1933 data-nosnippet>1933</a> </span><span class="macro">assert!</span>(batches[<span class="number">0</span>].column_by_name(<span class="string">"x"</span>).is_some());
+<a href=#1934 id=1934 data-nosnippet>1934</a> <span class="macro">assert!</span>(batches[<span class="number">0</span>].column_by_name(RESERVED_COL_NAME_FILE).is_some());
+<a href=#1935 id=1935 data-nosnippet>1935</a> <span class="macro">assert!</span>(batches[<span class="number">0</span>].column_by_name(<span class="string">"z"</span>).is_some());
+<a href=#1936 id=1936 data-nosnippet>1936</a> }
+<a href=#1937 id=1937 data-nosnippet>1937</a>
+<a href=#1938 id=1938 data-nosnippet>1938</a> <span class="attr">#[tokio::test]
+<a href=#1939 id=1939 data-nosnippet>1939</a> </span><span class="kw">async fn </span>test_select_file_column_only() {
<a href=#1940 id=1940 data-nosnippet>1940</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
<a href=#1941 id=1941 data-nosnippet>1941</a> fixture.setup_manifest_files().<span class="kw">await</span>;
<a href=#1942 id=1942 data-nosnippet>1942</a>
-<a href=#1943 id=1943 data-nosnippet>1943</a> <span class="comment">// Select x and _file columns
+<a href=#1943 id=1943 data-nosnippet>1943</a> <span class="comment">// Select only the _file column
<a href=#1944 id=1944 data-nosnippet>1944</a> </span><span class="kw">let </span>table_scan = fixture
<a href=#1945 id=1945 data-nosnippet>1945</a> .table
<a href=#1946 id=1946 data-nosnippet>1946</a> .scan()
-<a href=#1947 id=1947 data-nosnippet>1947</a> .select([<span class="string">"x"</span>, RESERVED_COL_NAME_FILE])
+<a href=#1947 id=1947 data-nosnippet>1947</a> .select([RESERVED_COL_NAME_FILE])
<a href=#1948 id=1948 data-nosnippet>1948</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
<a href=#1949 id=1949 data-nosnippet>1949</a> .build()
<a href=#1950 id=1950 data-nosnippet>1950</a> .unwrap();
@@ -1952,209 +1952,242 @@
<a href=#1952 id=1952 data-nosnippet>1952</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
<a href=#1953 id=1953 data-nosnippet>1953</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#1954 id=1954 data-nosnippet>1954</a>
-<a href=#1955 id=1955 data-nosnippet>1955</a> <span class="comment">// Collect all unique file paths from the batches
-<a href=#1956 id=1956 data-nosnippet>1956</a> </span><span class="kw">let </span><span class="kw-2">mut </span>file_paths = HashSet::new();
-<a href=#1957 id=1957 data-nosnippet>1957</a> <span class="kw">for </span>batch <span class="kw">in </span><span class="kw-2">&</span>batches {
-<a href=#1958 id=1958 data-nosnippet>1958</a> <span class="kw">let </span>file_col = batch.column_by_name(RESERVED_COL_NAME_FILE).unwrap();
-<a href=#1959 id=1959 data-nosnippet>1959</a> <span class="kw">let </span>run_array = file_col
-<a href=#1960 id=1960 data-nosnippet>1960</a> .as_any()
-<a href=#1961 id=1961 data-nosnippet>1961</a> .downcast_ref::<arrow_array::RunArray<arrow_array::types::Int32Type>>()
-<a href=#1962 id=1962 data-nosnippet>1962</a> .expect(<span class="string">"_file column should be a RunArray"</span>);
-<a href=#1963 id=1963 data-nosnippet>1963</a>
-<a href=#1964 id=1964 data-nosnippet>1964</a> <span class="kw">let </span>values = run_array.values();
-<a href=#1965 id=1965 data-nosnippet>1965</a> <span class="kw">let </span>string_values = values.as_string::<i32>();
-<a href=#1966 id=1966 data-nosnippet>1966</a> <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..string_values.len() {
-<a href=#1967 id=1967 data-nosnippet>1967</a> file_paths.insert(string_values.value(i).to_string());
-<a href=#1968 id=1968 data-nosnippet>1968</a> }
-<a href=#1969 id=1969 data-nosnippet>1969</a> }
-<a href=#1970 id=1970 data-nosnippet>1970</a>
-<a href=#1971 id=1971 data-nosnippet>1971</a> <span class="comment">// We should have multiple files (the test creates 1.parquet and 3.parquet)
-<a href=#1972 id=1972 data-nosnippet>1972</a> </span><span class="macro">assert!</span>(!file_paths.is_empty(), <span class="string">"Should have at least one file path"</span>);
-<a href=#1973 id=1973 data-nosnippet>1973</a>
-<a href=#1974 id=1974 data-nosnippet>1974</a> <span class="comment">// All paths should end with .parquet
-<a href=#1975 id=1975 data-nosnippet>1975</a> </span><span class="kw">for </span>path <span class="kw">in </span><span class="kw-2">&</span>file_paths {
-<a href=#1976 id=1976 data-nosnippet>1976</a> <span class="macro">assert!</span>(
-<a href=#1977 id=1977 data-nosnippet>1977</a> path.ends_with(<span class="string">".parquet"</span>),
-<a href=#1978 id=1978 data-nosnippet>1978</a> <span class="string">"All file paths should end with .parquet, got: {path}"
-<a href=#1979 id=1979 data-nosnippet>1979</a> </span>);
-<a href=#1980 id=1980 data-nosnippet>1980</a> }
-<a href=#1981 id=1981 data-nosnippet>1981</a> }
-<a href=#1982 id=1982 data-nosnippet>1982</a>
-<a href=#1983 id=1983 data-nosnippet>1983</a> <span class="attr">#[tokio::test]
-<a href=#1984 id=1984 data-nosnippet>1984</a> </span><span class="kw">async fn </span>test_file_column_at_start() {
-<a href=#1985 id=1985 data-nosnippet>1985</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#1986 id=1986 data-nosnippet>1986</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1955 id=1955 data-nosnippet>1955</a> <span class="comment">// Should have exactly 1 column
+<a href=#1956 id=1956 data-nosnippet>1956</a> </span><span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">1</span>);
+<a href=#1957 id=1957 data-nosnippet>1957</a>
+<a href=#1958 id=1958 data-nosnippet>1958</a> <span class="comment">// Verify it's the _file column
+<a href=#1959 id=1959 data-nosnippet>1959</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
+<a href=#1960 id=1960 data-nosnippet>1960</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), RESERVED_COL_NAME_FILE);
+<a href=#1961 id=1961 data-nosnippet>1961</a>
+<a href=#1962 id=1962 data-nosnippet>1962</a> <span class="comment">// Verify the batch has the correct number of rows
+<a href=#1963 id=1963 data-nosnippet>1963</a> // The scan reads files 1.parquet and 3.parquet (2.parquet is deleted)
+<a href=#1964 id=1964 data-nosnippet>1964</a> // Each file has 1024 rows, so total is 2048 rows
+<a href=#1965 id=1965 data-nosnippet>1965</a> </span><span class="kw">let </span>total_rows: usize = batches.iter().map(|b| b.num_rows()).sum();
+<a href=#1966 id=1966 data-nosnippet>1966</a> <span class="macro">assert_eq!</span>(total_rows, <span class="number">2048</span>);
+<a href=#1967 id=1967 data-nosnippet>1967</a> }
+<a href=#1968 id=1968 data-nosnippet>1968</a>
+<a href=#1969 id=1969 data-nosnippet>1969</a> <span class="attr">#[tokio::test]
+<a href=#1970 id=1970 data-nosnippet>1970</a> </span><span class="kw">async fn </span>test_file_column_with_multiple_files() {
+<a href=#1971 id=1971 data-nosnippet>1971</a> <span class="kw">use </span>std::collections::HashSet;
+<a href=#1972 id=1972 data-nosnippet>1972</a>
+<a href=#1973 id=1973 data-nosnippet>1973</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#1974 id=1974 data-nosnippet>1974</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#1975 id=1975 data-nosnippet>1975</a>
+<a href=#1976 id=1976 data-nosnippet>1976</a> <span class="comment">// Select x and _file columns
+<a href=#1977 id=1977 data-nosnippet>1977</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#1978 id=1978 data-nosnippet>1978</a> .table
+<a href=#1979 id=1979 data-nosnippet>1979</a> .scan()
+<a href=#1980 id=1980 data-nosnippet>1980</a> .select([<span class="string">"x"</span>, RESERVED_COL_NAME_FILE])
+<a href=#1981 id=1981 data-nosnippet>1981</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#1982 id=1982 data-nosnippet>1982</a> .build()
+<a href=#1983 id=1983 data-nosnippet>1983</a> .unwrap();
+<a href=#1984 id=1984 data-nosnippet>1984</a>
+<a href=#1985 id=1985 data-nosnippet>1985</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#1986 id=1986 data-nosnippet>1986</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#1987 id=1987 data-nosnippet>1987</a>
-<a href=#1988 id=1988 data-nosnippet>1988</a> <span class="comment">// Select _file at the start
-<a href=#1989 id=1989 data-nosnippet>1989</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#1990 id=1990 data-nosnippet>1990</a> .table
-<a href=#1991 id=1991 data-nosnippet>1991</a> .scan()
-<a href=#1992 id=1992 data-nosnippet>1992</a> .select([RESERVED_COL_NAME_FILE, <span class="string">"x"</span>, <span class="string">"y"</span>])
-<a href=#1993 id=1993 data-nosnippet>1993</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#1994 id=1994 data-nosnippet>1994</a> .build()
-<a href=#1995 id=1995 data-nosnippet>1995</a> .unwrap();
+<a href=#1988 id=1988 data-nosnippet>1988</a> <span class="comment">// Collect all unique file paths from the batches
+<a href=#1989 id=1989 data-nosnippet>1989</a> </span><span class="kw">let </span><span class="kw-2">mut </span>file_paths = HashSet::new();
+<a href=#1990 id=1990 data-nosnippet>1990</a> <span class="kw">for </span>batch <span class="kw">in </span><span class="kw-2">&</span>batches {
+<a href=#1991 id=1991 data-nosnippet>1991</a> <span class="kw">let </span>file_col = batch.column_by_name(RESERVED_COL_NAME_FILE).unwrap();
+<a href=#1992 id=1992 data-nosnippet>1992</a> <span class="kw">let </span>run_array = file_col
+<a href=#1993 id=1993 data-nosnippet>1993</a> .as_any()
+<a href=#1994 id=1994 data-nosnippet>1994</a> .downcast_ref::<arrow_array::RunArray<arrow_array::types::Int32Type>>()
+<a href=#1995 id=1995 data-nosnippet>1995</a> .expect(<span class="string">"_file column should be a RunArray"</span>);
<a href=#1996 id=1996 data-nosnippet>1996</a>
-<a href=#1997 id=1997 data-nosnippet>1997</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#1998 id=1998 data-nosnippet>1998</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#1999 id=1999 data-nosnippet>1999</a>
-<a href=#2000 id=2000 data-nosnippet>2000</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">3</span>);
-<a href=#2001 id=2001 data-nosnippet>2001</a>
-<a href=#2002 id=2002 data-nosnippet>2002</a> <span class="comment">// Verify _file is at position 0
-<a href=#2003 id=2003 data-nosnippet>2003</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
-<a href=#2004 id=2004 data-nosnippet>2004</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), RESERVED_COL_NAME_FILE);
-<a href=#2005 id=2005 data-nosnippet>2005</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">1</span>).name(), <span class="string">"x"</span>);
-<a href=#2006 id=2006 data-nosnippet>2006</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">2</span>).name(), <span class="string">"y"</span>);
-<a href=#2007 id=2007 data-nosnippet>2007</a> }
-<a href=#2008 id=2008 data-nosnippet>2008</a>
-<a href=#2009 id=2009 data-nosnippet>2009</a> <span class="attr">#[tokio::test]
-<a href=#2010 id=2010 data-nosnippet>2010</a> </span><span class="kw">async fn </span>test_file_column_at_end() {
-<a href=#2011 id=2011 data-nosnippet>2011</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#2012 id=2012 data-nosnippet>2012</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#2013 id=2013 data-nosnippet>2013</a>
-<a href=#2014 id=2014 data-nosnippet>2014</a> <span class="comment">// Select _file at the end
-<a href=#2015 id=2015 data-nosnippet>2015</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#2016 id=2016 data-nosnippet>2016</a> .table
-<a href=#2017 id=2017 data-nosnippet>2017</a> .scan()
-<a href=#2018 id=2018 data-nosnippet>2018</a> .select([<span class="string">"x"</span>, <span class="string">"y"</span>, RESERVED_COL_NAME_FILE])
-<a href=#2019 id=2019 data-nosnippet>2019</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#2020 id=2020 data-nosnippet>2020</a> .build()
-<a href=#2021 id=2021 data-nosnippet>2021</a> .unwrap();
-<a href=#2022 id=2022 data-nosnippet>2022</a>
-<a href=#2023 id=2023 data-nosnippet>2023</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#2024 id=2024 data-nosnippet>2024</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#2025 id=2025 data-nosnippet>2025</a>
-<a href=#2026 id=2026 data-nosnippet>2026</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">3</span>);
-<a href=#2027 id=2027 data-nosnippet>2027</a>
-<a href=#2028 id=2028 data-nosnippet>2028</a> <span class="comment">// Verify _file is at position 2 (the end)
-<a href=#2029 id=2029 data-nosnippet>2029</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
-<a href=#2030 id=2030 data-nosnippet>2030</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), <span class="string">"x"</span>);
-<a href=#2031 id=2031 data-nosnippet>2031</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">1</span>).name(), <span class="string">"y"</span>);
-<a href=#2032 id=2032 data-nosnippet>2032</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">2</span>).name(), RESERVED_COL_NAME_FILE);
-<a href=#2033 id=2033 data-nosnippet>2033</a> }
+<a href=#1997 id=1997 data-nosnippet>1997</a> <span class="kw">let </span>values = run_array.values();
+<a href=#1998 id=1998 data-nosnippet>1998</a> <span class="kw">let </span>string_values = values.as_string::<i32>();
+<a href=#1999 id=1999 data-nosnippet>1999</a> <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..string_values.len() {
+<a href=#2000 id=2000 data-nosnippet>2000</a> file_paths.insert(string_values.value(i).to_string());
+<a href=#2001 id=2001 data-nosnippet>2001</a> }
+<a href=#2002 id=2002 data-nosnippet>2002</a> }
+<a href=#2003 id=2003 data-nosnippet>2003</a>
+<a href=#2004 id=2004 data-nosnippet>2004</a> <span class="comment">// We should have multiple files (the test creates 1.parquet and 3.parquet)
+<a href=#2005 id=2005 data-nosnippet>2005</a> </span><span class="macro">assert!</span>(!file_paths.is_empty(), <span class="string">"Should have at least one file path"</span>);
+<a href=#2006 id=2006 data-nosnippet>2006</a>
+<a href=#2007 id=2007 data-nosnippet>2007</a> <span class="comment">// All paths should end with .parquet
+<a href=#2008 id=2008 data-nosnippet>2008</a> </span><span class="kw">for </span>path <span class="kw">in </span><span class="kw-2">&</span>file_paths {
+<a href=#2009 id=2009 data-nosnippet>2009</a> <span class="macro">assert!</span>(
+<a href=#2010 id=2010 data-nosnippet>2010</a> path.ends_with(<span class="string">".parquet"</span>),
+<a href=#2011 id=2011 data-nosnippet>2011</a> <span class="string">"All file paths should end with .parquet, got: {path}"
+<a href=#2012 id=2012 data-nosnippet>2012</a> </span>);
+<a href=#2013 id=2013 data-nosnippet>2013</a> }
+<a href=#2014 id=2014 data-nosnippet>2014</a> }
+<a href=#2015 id=2015 data-nosnippet>2015</a>
+<a href=#2016 id=2016 data-nosnippet>2016</a> <span class="attr">#[tokio::test]
+<a href=#2017 id=2017 data-nosnippet>2017</a> </span><span class="kw">async fn </span>test_file_column_at_start() {
+<a href=#2018 id=2018 data-nosnippet>2018</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#2019 id=2019 data-nosnippet>2019</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#2020 id=2020 data-nosnippet>2020</a>
+<a href=#2021 id=2021 data-nosnippet>2021</a> <span class="comment">// Select _file at the start
+<a href=#2022 id=2022 data-nosnippet>2022</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#2023 id=2023 data-nosnippet>2023</a> .table
+<a href=#2024 id=2024 data-nosnippet>2024</a> .scan()
+<a href=#2025 id=2025 data-nosnippet>2025</a> .select([RESERVED_COL_NAME_FILE, <span class="string">"x"</span>, <span class="string">"y"</span>])
+<a href=#2026 id=2026 data-nosnippet>2026</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#2027 id=2027 data-nosnippet>2027</a> .build()
+<a href=#2028 id=2028 data-nosnippet>2028</a> .unwrap();
+<a href=#2029 id=2029 data-nosnippet>2029</a>
+<a href=#2030 id=2030 data-nosnippet>2030</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#2031 id=2031 data-nosnippet>2031</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#2032 id=2032 data-nosnippet>2032</a>
+<a href=#2033 id=2033 data-nosnippet>2033</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">3</span>);
<a href=#2034 id=2034 data-nosnippet>2034</a>
-<a href=#2035 id=2035 data-nosnippet>2035</a> <span class="attr">#[tokio::test]
-<a href=#2036 id=2036 data-nosnippet>2036</a> </span><span class="kw">async fn </span>test_select_with_repeated_column_names() {
-<a href=#2037 id=2037 data-nosnippet>2037</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#2038 id=2038 data-nosnippet>2038</a> fixture.setup_manifest_files().<span class="kw">await</span>;
-<a href=#2039 id=2039 data-nosnippet>2039</a>
-<a href=#2040 id=2040 data-nosnippet>2040</a> <span class="comment">// Select with repeated column names - both regular columns and virtual columns
-<a href=#2041 id=2041 data-nosnippet>2041</a> // Repeated columns should appear multiple times in the result (duplicates are allowed)
-<a href=#2042 id=2042 data-nosnippet>2042</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#2043 id=2043 data-nosnippet>2043</a> .table
-<a href=#2044 id=2044 data-nosnippet>2044</a> .scan()
-<a href=#2045 id=2045 data-nosnippet>2045</a> .select([
-<a href=#2046 id=2046 data-nosnippet>2046</a> <span class="string">"x"</span>,
-<a href=#2047 id=2047 data-nosnippet>2047</a> RESERVED_COL_NAME_FILE,
-<a href=#2048 id=2048 data-nosnippet>2048</a> <span class="string">"x"</span>, <span class="comment">// x repeated
-<a href=#2049 id=2049 data-nosnippet>2049</a> </span><span class="string">"y"</span>,
-<a href=#2050 id=2050 data-nosnippet>2050</a> RESERVED_COL_NAME_FILE, <span class="comment">// _file repeated
-<a href=#2051 id=2051 data-nosnippet>2051</a> </span><span class="string">"y"</span>, <span class="comment">// y repeated
-<a href=#2052 id=2052 data-nosnippet>2052</a> </span>])
-<a href=#2053 id=2053 data-nosnippet>2053</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
-<a href=#2054 id=2054 data-nosnippet>2054</a> .build()
-<a href=#2055 id=2055 data-nosnippet>2055</a> .unwrap();
-<a href=#2056 id=2056 data-nosnippet>2056</a>
-<a href=#2057 id=2057 data-nosnippet>2057</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
-<a href=#2058 id=2058 data-nosnippet>2058</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
-<a href=#2059 id=2059 data-nosnippet>2059</a>
-<a href=#2060 id=2060 data-nosnippet>2060</a> <span class="comment">// Verify we have exactly 6 columns (duplicates are allowed and preserved)
-<a href=#2061 id=2061 data-nosnippet>2061</a> </span><span class="macro">assert_eq!</span>(
-<a href=#2062 id=2062 data-nosnippet>2062</a> batches[<span class="number">0</span>].num_columns(),
-<a href=#2063 id=2063 data-nosnippet>2063</a> <span class="number">6</span>,
-<a href=#2064 id=2064 data-nosnippet>2064</a> <span class="string">"Should have exactly 6 columns with duplicates"
-<a href=#2065 id=2065 data-nosnippet>2065</a> </span>);
-<a href=#2066 id=2066 data-nosnippet>2066</a>
-<a href=#2067 id=2067 data-nosnippet>2067</a> <span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
-<a href=#2068 id=2068 data-nosnippet>2068</a>
-<a href=#2069 id=2069 data-nosnippet>2069</a> <span class="comment">// Verify columns appear in the exact order requested: x, _file, x, y, _file, y
-<a href=#2070 id=2070 data-nosnippet>2070</a> </span><span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), <span class="string">"x"</span>, <span class="string">"Column 0 should be x"</span>);
-<a href=#2071 id=2071 data-nosnippet>2071</a> <span class="macro">assert_eq!</span>(
-<a href=#2072 id=2072 data-nosnippet>2072</a> schema.field(<span class="number">1</span>).name(),
-<a href=#2073 id=2073 data-nosnippet>2073</a> RESERVED_COL_NAME_FILE,
-<a href=#2074 id=2074 data-nosnippet>2074</a> <span class="string">"Column 1 should be _file"
-<a href=#2075 id=2075 data-nosnippet>2075</a> </span>);
-<a href=#2076 id=2076 data-nosnippet>2076</a> <span class="macro">assert_eq!</span>(
-<a href=#2077 id=2077 data-nosnippet>2077</a> schema.field(<span class="number">2</span>).name(),
-<a href=#2078 id=2078 data-nosnippet>2078</a> <span class="string">"x"</span>,
-<a href=#2079 id=2079 data-nosnippet>2079</a> <span class="string">"Column 2 should be x (duplicate)"
-<a href=#2080 id=2080 data-nosnippet>2080</a> </span>);
-<a href=#2081 id=2081 data-nosnippet>2081</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">3</span>).name(), <span class="string">"y"</span>, <span class="string">"Column 3 should be y"</span>);
-<a href=#2082 id=2082 data-nosnippet>2082</a> <span class="macro">assert_eq!</span>(
-<a href=#2083 id=2083 data-nosnippet>2083</a> schema.field(<span class="number">4</span>).name(),
-<a href=#2084 id=2084 data-nosnippet>2084</a> RESERVED_COL_NAME_FILE,
-<a href=#2085 id=2085 data-nosnippet>2085</a> <span class="string">"Column 4 should be _file (duplicate)"
-<a href=#2086 id=2086 data-nosnippet>2086</a> </span>);
-<a href=#2087 id=2087 data-nosnippet>2087</a> <span class="macro">assert_eq!</span>(
-<a href=#2088 id=2088 data-nosnippet>2088</a> schema.field(<span class="number">5</span>).name(),
-<a href=#2089 id=2089 data-nosnippet>2089</a> <span class="string">"y"</span>,
-<a href=#2090 id=2090 data-nosnippet>2090</a> <span class="string">"Column 5 should be y (duplicate)"
-<a href=#2091 id=2091 data-nosnippet>2091</a> </span>);
+<a href=#2035 id=2035 data-nosnippet>2035</a> <span class="comment">// Verify _file is at position 0
+<a href=#2036 id=2036 data-nosnippet>2036</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
+<a href=#2037 id=2037 data-nosnippet>2037</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), RESERVED_COL_NAME_FILE);
+<a href=#2038 id=2038 data-nosnippet>2038</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">1</span>).name(), <span class="string">"x"</span>);
+<a href=#2039 id=2039 data-nosnippet>2039</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">2</span>).name(), <span class="string">"y"</span>);
+<a href=#2040 id=2040 data-nosnippet>2040</a> }
+<a href=#2041 id=2041 data-nosnippet>2041</a>
+<a href=#2042 id=2042 data-nosnippet>2042</a> <span class="attr">#[tokio::test]
+<a href=#2043 id=2043 data-nosnippet>2043</a> </span><span class="kw">async fn </span>test_file_column_at_end() {
+<a href=#2044 id=2044 data-nosnippet>2044</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#2045 id=2045 data-nosnippet>2045</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#2046 id=2046 data-nosnippet>2046</a>
+<a href=#2047 id=2047 data-nosnippet>2047</a> <span class="comment">// Select _file at the end
+<a href=#2048 id=2048 data-nosnippet>2048</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#2049 id=2049 data-nosnippet>2049</a> .table
+<a href=#2050 id=2050 data-nosnippet>2050</a> .scan()
+<a href=#2051 id=2051 data-nosnippet>2051</a> .select([<span class="string">"x"</span>, <span class="string">"y"</span>, RESERVED_COL_NAME_FILE])
+<a href=#2052 id=2052 data-nosnippet>2052</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#2053 id=2053 data-nosnippet>2053</a> .build()
+<a href=#2054 id=2054 data-nosnippet>2054</a> .unwrap();
+<a href=#2055 id=2055 data-nosnippet>2055</a>
+<a href=#2056 id=2056 data-nosnippet>2056</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#2057 id=2057 data-nosnippet>2057</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
+<a href=#2058 id=2058 data-nosnippet>2058</a>
+<a href=#2059 id=2059 data-nosnippet>2059</a> <span class="macro">assert_eq!</span>(batches[<span class="number">0</span>].num_columns(), <span class="number">3</span>);
+<a href=#2060 id=2060 data-nosnippet>2060</a>
+<a href=#2061 id=2061 data-nosnippet>2061</a> <span class="comment">// Verify _file is at position 2 (the end)
+<a href=#2062 id=2062 data-nosnippet>2062</a> </span><span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
+<a href=#2063 id=2063 data-nosnippet>2063</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), <span class="string">"x"</span>);
+<a href=#2064 id=2064 data-nosnippet>2064</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">1</span>).name(), <span class="string">"y"</span>);
+<a href=#2065 id=2065 data-nosnippet>2065</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">2</span>).name(), RESERVED_COL_NAME_FILE);
+<a href=#2066 id=2066 data-nosnippet>2066</a> }
+<a href=#2067 id=2067 data-nosnippet>2067</a>
+<a href=#2068 id=2068 data-nosnippet>2068</a> <span class="attr">#[tokio::test]
+<a href=#2069 id=2069 data-nosnippet>2069</a> </span><span class="kw">async fn </span>test_select_with_repeated_column_names() {
+<a href=#2070 id=2070 data-nosnippet>2070</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#2071 id=2071 data-nosnippet>2071</a> fixture.setup_manifest_files().<span class="kw">await</span>;
+<a href=#2072 id=2072 data-nosnippet>2072</a>
+<a href=#2073 id=2073 data-nosnippet>2073</a> <span class="comment">// Select with repeated column names - both regular columns and virtual columns
+<a href=#2074 id=2074 data-nosnippet>2074</a> // Repeated columns should appear multiple times in the result (duplicates are allowed)
+<a href=#2075 id=2075 data-nosnippet>2075</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#2076 id=2076 data-nosnippet>2076</a> .table
+<a href=#2077 id=2077 data-nosnippet>2077</a> .scan()
+<a href=#2078 id=2078 data-nosnippet>2078</a> .select([
+<a href=#2079 id=2079 data-nosnippet>2079</a> <span class="string">"x"</span>,
+<a href=#2080 id=2080 data-nosnippet>2080</a> RESERVED_COL_NAME_FILE,
+<a href=#2081 id=2081 data-nosnippet>2081</a> <span class="string">"x"</span>, <span class="comment">// x repeated
+<a href=#2082 id=2082 data-nosnippet>2082</a> </span><span class="string">"y"</span>,
+<a href=#2083 id=2083 data-nosnippet>2083</a> RESERVED_COL_NAME_FILE, <span class="comment">// _file repeated
+<a href=#2084 id=2084 data-nosnippet>2084</a> </span><span class="string">"y"</span>, <span class="comment">// y repeated
+<a href=#2085 id=2085 data-nosnippet>2085</a> </span>])
+<a href=#2086 id=2086 data-nosnippet>2086</a> .with_row_selection_enabled(<span class="bool-val">true</span>)
+<a href=#2087 id=2087 data-nosnippet>2087</a> .build()
+<a href=#2088 id=2088 data-nosnippet>2088</a> .unwrap();
+<a href=#2089 id=2089 data-nosnippet>2089</a>
+<a href=#2090 id=2090 data-nosnippet>2090</a> <span class="kw">let </span>batch_stream = table_scan.to_arrow().<span class="kw">await</span>.unwrap();
+<a href=#2091 id=2091 data-nosnippet>2091</a> <span class="kw">let </span>batches: Vec<<span class="kw">_</span>> = batch_stream.try_collect().<span class="kw">await</span>.unwrap();
<a href=#2092 id=2092 data-nosnippet>2092</a>
-<a href=#2093 id=2093 data-nosnippet>2093</a> <span class="comment">// Verify all columns have correct data types
-<a href=#2094 id=2094 data-nosnippet>2094</a> </span><span class="macro">assert!</span>(
-<a href=#2095 id=2095 data-nosnippet>2095</a> <span class="macro">matches!</span>(schema.field(<span class="number">0</span>).data_type(), arrow_schema::DataType::Int64),
-<a href=#2096 id=2096 data-nosnippet>2096</a> <span class="string">"Column x should be Int64"
-<a href=#2097 id=2097 data-nosnippet>2097</a> </span>);
-<a href=#2098 id=2098 data-nosnippet>2098</a> <span class="macro">assert!</span>(
-<a href=#2099 id=2099 data-nosnippet>2099</a> <span class="macro">matches!</span>(schema.field(<span class="number">2</span>).data_type(), arrow_schema::DataType::Int64),
-<a href=#2100 id=2100 data-nosnippet>2100</a> <span class="string">"Column x (duplicate) should be Int64"
-<a href=#2101 id=2101 data-nosnippet>2101</a> </span>);
-<a href=#2102 id=2102 data-nosnippet>2102</a> <span class="macro">assert!</span>(
-<a href=#2103 id=2103 data-nosnippet>2103</a> <span class="macro">matches!</span>(schema.field(<span class="number">3</span>).data_type(), arrow_schema::DataType::Int64),
-<a href=#2104 id=2104 data-nosnippet>2104</a> <span class="string">"Column y should be Int64"
-<a href=#2105 id=2105 data-nosnippet>2105</a> </span>);
-<a href=#2106 id=2106 data-nosnippet>2106</a> <span class="macro">assert!</span>(
-<a href=#2107 id=2107 data-nosnippet>2107</a> <span class="macro">matches!</span>(schema.field(<span class="number">5</span>).data_type(), arrow_schema::DataType::Int64),
-<a href=#2108 id=2108 data-nosnippet>2108</a> <span class="string">"Column y (duplicate) should be Int64"
-<a href=#2109 id=2109 data-nosnippet>2109</a> </span>);
-<a href=#2110 id=2110 data-nosnippet>2110</a> <span class="macro">assert!</span>(
-<a href=#2111 id=2111 data-nosnippet>2111</a> <span class="macro">matches!</span>(
-<a href=#2112 id=2112 data-nosnippet>2112</a> schema.field(<span class="number">1</span>).data_type(),
-<a href=#2113 id=2113 data-nosnippet>2113</a> arrow_schema::DataType::RunEndEncoded(<span class="kw">_</span>, <span class="kw">_</span>)
-<a href=#2114 id=2114 data-nosnippet>2114</a> ),
-<a href=#2115 id=2115 data-nosnippet>2115</a> <span class="string">"_file column should use RunEndEncoded type"
-<a href=#2116 id=2116 data-nosnippet>2116</a> </span>);
-<a href=#2117 id=2117 data-nosnippet>2117</a> <span class="macro">assert!</span>(
-<a href=#2118 id=2118 data-nosnippet>2118</a> <span class="macro">matches!</span>(
-<a href=#2119 id=2119 data-nosnippet>2119</a> schema.field(<span class="number">4</span>).data_type(),
-<a href=#2120 id=2120 data-nosnippet>2120</a> arrow_schema::DataType::RunEndEncoded(<span class="kw">_</span>, <span class="kw">_</span>)
-<a href=#2121 id=2121 data-nosnippet>2121</a> ),
-<a href=#2122 id=2122 data-nosnippet>2122</a> <span class="string">"_file column (duplicate) should use RunEndEncoded type"
-<a href=#2123 id=2123 data-nosnippet>2123</a> </span>);
-<a href=#2124 id=2124 data-nosnippet>2124</a> }
+<a href=#2093 id=2093 data-nosnippet>2093</a> <span class="comment">// Verify we have exactly 6 columns (duplicates are allowed and preserved)
+<a href=#2094 id=2094 data-nosnippet>2094</a> </span><span class="macro">assert_eq!</span>(
+<a href=#2095 id=2095 data-nosnippet>2095</a> batches[<span class="number">0</span>].num_columns(),
+<a href=#2096 id=2096 data-nosnippet>2096</a> <span class="number">6</span>,
+<a href=#2097 id=2097 data-nosnippet>2097</a> <span class="string">"Should have exactly 6 columns with duplicates"
+<a href=#2098 id=2098 data-nosnippet>2098</a> </span>);
+<a href=#2099 id=2099 data-nosnippet>2099</a>
+<a href=#2100 id=2100 data-nosnippet>2100</a> <span class="kw">let </span>schema = batches[<span class="number">0</span>].schema();
+<a href=#2101 id=2101 data-nosnippet>2101</a>
+<a href=#2102 id=2102 data-nosnippet>2102</a> <span class="comment">// Verify columns appear in the exact order requested: x, _file, x, y, _file, y
+<a href=#2103 id=2103 data-nosnippet>2103</a> </span><span class="macro">assert_eq!</span>(schema.field(<span class="number">0</span>).name(), <span class="string">"x"</span>, <span class="string">"Column 0 should be x"</span>);
+<a href=#2104 id=2104 data-nosnippet>2104</a> <span class="macro">assert_eq!</span>(
+<a href=#2105 id=2105 data-nosnippet>2105</a> schema.field(<span class="number">1</span>).name(),
+<a href=#2106 id=2106 data-nosnippet>2106</a> RESERVED_COL_NAME_FILE,
+<a href=#2107 id=2107 data-nosnippet>2107</a> <span class="string">"Column 1 should be _file"
+<a href=#2108 id=2108 data-nosnippet>2108</a> </span>);
+<a href=#2109 id=2109 data-nosnippet>2109</a> <span class="macro">assert_eq!</span>(
+<a href=#2110 id=2110 data-nosnippet>2110</a> schema.field(<span class="number">2</span>).name(),
+<a href=#2111 id=2111 data-nosnippet>2111</a> <span class="string">"x"</span>,
+<a href=#2112 id=2112 data-nosnippet>2112</a> <span class="string">"Column 2 should be x (duplicate)"
+<a href=#2113 id=2113 data-nosnippet>2113</a> </span>);
+<a href=#2114 id=2114 data-nosnippet>2114</a> <span class="macro">assert_eq!</span>(schema.field(<span class="number">3</span>).name(), <span class="string">"y"</span>, <span class="string">"Column 3 should be y"</span>);
+<a href=#2115 id=2115 data-nosnippet>2115</a> <span class="macro">assert_eq!</span>(
+<a href=#2116 id=2116 data-nosnippet>2116</a> schema.field(<span class="number">4</span>).name(),
+<a href=#2117 id=2117 data-nosnippet>2117</a> RESERVED_COL_NAME_FILE,
+<a href=#2118 id=2118 data-nosnippet>2118</a> <span class="string">"Column 4 should be _file (duplicate)"
+<a href=#2119 id=2119 data-nosnippet>2119</a> </span>);
+<a href=#2120 id=2120 data-nosnippet>2120</a> <span class="macro">assert_eq!</span>(
+<a href=#2121 id=2121 data-nosnippet>2121</a> schema.field(<span class="number">5</span>).name(),
+<a href=#2122 id=2122 data-nosnippet>2122</a> <span class="string">"y"</span>,
+<a href=#2123 id=2123 data-nosnippet>2123</a> <span class="string">"Column 5 should be y (duplicate)"
+<a href=#2124 id=2124 data-nosnippet>2124</a> </span>);
<a href=#2125 id=2125 data-nosnippet>2125</a>
-<a href=#2126 id=2126 data-nosnippet>2126</a> <span class="attr">#[tokio::test]
-<a href=#2127 id=2127 data-nosnippet>2127</a> </span><span class="kw">async fn </span>test_scan_deadlock() {
-<a href=#2128 id=2128 data-nosnippet>2128</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
-<a href=#2129 id=2129 data-nosnippet>2129</a> fixture.setup_deadlock_manifests().<span class="kw">await</span>;
-<a href=#2130 id=2130 data-nosnippet>2130</a>
-<a href=#2131 id=2131 data-nosnippet>2131</a> <span class="comment">// Create table scan with concurrency limit 1
-<a href=#2132 id=2132 data-nosnippet>2132</a> // This sets channel size to 1.
-<a href=#2133 id=2133 data-nosnippet>2133</a> // Data manifest has 10 entries -> will block producer.
-<a href=#2134 id=2134 data-nosnippet>2134</a> // Delete manifest is 2nd in list -> won't be processed.
-<a href=#2135 id=2135 data-nosnippet>2135</a> // Consumer 2 (Data) not started -> blocked.
-<a href=#2136 id=2136 data-nosnippet>2136</a> // Consumer 1 (Delete) waiting -> blocked.
-<a href=#2137 id=2137 data-nosnippet>2137</a> </span><span class="kw">let </span>table_scan = fixture
-<a href=#2138 id=2138 data-nosnippet>2138</a> .table
-<a href=#2139 id=2139 data-nosnippet>2139</a> .scan()
-<a href=#2140 id=2140 data-nosnippet>2140</a> .with_concurrency_limit(<span class="number">1</span>)
-<a href=#2141 id=2141 data-nosnippet>2141</a> .build()
-<a href=#2142 id=2142 data-nosnippet>2142</a> .unwrap();
-<a href=#2143 id=2143 data-nosnippet>2143</a>
-<a href=#2144 id=2144 data-nosnippet>2144</a> <span class="comment">// This should timeout/hang if deadlock exists
-<a href=#2145 id=2145 data-nosnippet>2145</a> // We can use tokio::time::timeout
-<a href=#2146 id=2146 data-nosnippet>2146</a> </span><span class="kw">let </span>result = tokio::time::timeout(std::time::Duration::from_secs(<span class="number">5</span>), <span class="kw">async </span>{
-<a href=#2147 id=2147 data-nosnippet>2147</a> table_scan
-<a href=#2148 id=2148 data-nosnippet>2148</a> .plan_files()
-<a href=#2149 id=2149 data-nosnippet>2149</a> .<span class="kw">await
-<a href=#2150 id=2150 data-nosnippet>2150</a> </span>.unwrap()
-<a href=#2151 id=2151 data-nosnippet>2151</a> .try_collect::<Vec<<span class="kw">_</span>>>()
-<a href=#2152 id=2152 data-nosnippet>2152</a> .<span class="kw">await
-<a href=#2153 id=2153 data-nosnippet>2153</a> </span>})
-<a href=#2154 id=2154 data-nosnippet>2154</a> .<span class="kw">await</span>;
-<a href=#2155 id=2155 data-nosnippet>2155</a>
-<a href=#2156 id=2156 data-nosnippet>2156</a> <span class="comment">// Assert it finished (didn't timeout)
-<a href=#2157 id=2157 data-nosnippet>2157</a> </span><span class="macro">assert!</span>(result.is_ok(), <span class="string">"Scan timed out - deadlock detected"</span>);
-<a href=#2158 id=2158 data-nosnippet>2158</a> }
-<a href=#2159 id=2159 data-nosnippet>2159</a>}
+<a href=#2126 id=2126 data-nosnippet>2126</a> <span class="comment">// Verify all columns have correct data types
+<a href=#2127 id=2127 data-nosnippet>2127</a> </span><span class="macro">assert!</span>(
+<a href=#2128 id=2128 data-nosnippet>2128</a> <span class="macro">matches!</span>(schema.field(<span class="number">0</span>).data_type(), arrow_schema::DataType::Int64),
+<a href=#2129 id=2129 data-nosnippet>2129</a> <span class="string">"Column x should be Int64"
+<a href=#2130 id=2130 data-nosnippet>2130</a> </span>);
+<a href=#2131 id=2131 data-nosnippet>2131</a> <span class="macro">assert!</span>(
+<a href=#2132 id=2132 data-nosnippet>2132</a> <span class="macro">matches!</span>(schema.field(<span class="number">2</span>).data_type(), arrow_schema::DataType::Int64),
+<a href=#2133 id=2133 data-nosnippet>2133</a> <span class="string">"Column x (duplicate) should be Int64"
+<a href=#2134 id=2134 data-nosnippet>2134</a> </span>);
+<a href=#2135 id=2135 data-nosnippet>2135</a> <span class="macro">assert!</span>(
+<a href=#2136 id=2136 data-nosnippet>2136</a> <span class="macro">matches!</span>(schema.field(<span class="number">3</span>).data_type(), arrow_schema::DataType::Int64),
+<a href=#2137 id=2137 data-nosnippet>2137</a> <span class="string">"Column y should be Int64"
+<a href=#2138 id=2138 data-nosnippet>2138</a> </span>);
+<a href=#2139 id=2139 data-nosnippet>2139</a> <span class="macro">assert!</span>(
+<a href=#2140 id=2140 data-nosnippet>2140</a> <span class="macro">matches!</span>(schema.field(<span class="number">5</span>).data_type(), arrow_schema::DataType::Int64),
+<a href=#2141 id=2141 data-nosnippet>2141</a> <span class="string">"Column y (duplicate) should be Int64"
+<a href=#2142 id=2142 data-nosnippet>2142</a> </span>);
+<a href=#2143 id=2143 data-nosnippet>2143</a> <span class="macro">assert!</span>(
+<a href=#2144 id=2144 data-nosnippet>2144</a> <span class="macro">matches!</span>(
+<a href=#2145 id=2145 data-nosnippet>2145</a> schema.field(<span class="number">1</span>).data_type(),
+<a href=#2146 id=2146 data-nosnippet>2146</a> arrow_schema::DataType::RunEndEncoded(<span class="kw">_</span>, <span class="kw">_</span>)
+<a href=#2147 id=2147 data-nosnippet>2147</a> ),
+<a href=#2148 id=2148 data-nosnippet>2148</a> <span class="string">"_file column should use RunEndEncoded type"
+<a href=#2149 id=2149 data-nosnippet>2149</a> </span>);
+<a href=#2150 id=2150 data-nosnippet>2150</a> <span class="macro">assert!</span>(
+<a href=#2151 id=2151 data-nosnippet>2151</a> <span class="macro">matches!</span>(
+<a href=#2152 id=2152 data-nosnippet>2152</a> schema.field(<span class="number">4</span>).data_type(),
+<a href=#2153 id=2153 data-nosnippet>2153</a> arrow_schema::DataType::RunEndEncoded(<span class="kw">_</span>, <span class="kw">_</span>)
+<a href=#2154 id=2154 data-nosnippet>2154</a> ),
+<a href=#2155 id=2155 data-nosnippet>2155</a> <span class="string">"_file column (duplicate) should use RunEndEncoded type"
+<a href=#2156 id=2156 data-nosnippet>2156</a> </span>);
+<a href=#2157 id=2157 data-nosnippet>2157</a> }
+<a href=#2158 id=2158 data-nosnippet>2158</a>
+<a href=#2159 id=2159 data-nosnippet>2159</a> <span class="attr">#[tokio::test]
+<a href=#2160 id=2160 data-nosnippet>2160</a> </span><span class="kw">async fn </span>test_scan_deadlock() {
+<a href=#2161 id=2161 data-nosnippet>2161</a> <span class="kw">let </span><span class="kw-2">mut </span>fixture = TableTestFixture::new();
+<a href=#2162 id=2162 data-nosnippet>2162</a> fixture.setup_deadlock_manifests().<span class="kw">await</span>;
+<a href=#2163 id=2163 data-nosnippet>2163</a>
+<a href=#2164 id=2164 data-nosnippet>2164</a> <span class="comment">// Create table scan with concurrency limit 1
+<a href=#2165 id=2165 data-nosnippet>2165</a> // This sets channel size to 1.
+<a href=#2166 id=2166 data-nosnippet>2166</a> // Data manifest has 10 entries -> will block producer.
+<a href=#2167 id=2167 data-nosnippet>2167</a> // Delete manifest is 2nd in list -> won't be processed.
+<a href=#2168 id=2168 data-nosnippet>2168</a> // Consumer 2 (Data) not started -> blocked.
+<a href=#2169 id=2169 data-nosnippet>2169</a> // Consumer 1 (Delete) waiting -> blocked.
+<a href=#2170 id=2170 data-nosnippet>2170</a> </span><span class="kw">let </span>table_scan = fixture
+<a href=#2171 id=2171 data-nosnippet>2171</a> .table
+<a href=#2172 id=2172 data-nosnippet>2172</a> .scan()
+<a href=#2173 id=2173 data-nosnippet>2173</a> .with_concurrency_limit(<span class="number">1</span>)
+<a href=#2174 id=2174 data-nosnippet>2174</a> .build()
+<a href=#2175 id=2175 data-nosnippet>2175</a> .unwrap();
+<a href=#2176 id=2176 data-nosnippet>2176</a>
+<a href=#2177 id=2177 data-nosnippet>2177</a> <span class="comment">// This should timeout/hang if deadlock exists
+<a href=#2178 id=2178 data-nosnippet>2178</a> // We can use tokio::time::timeout
+<a href=#2179 id=2179 data-nosnippet>2179</a> </span><span class="kw">let </span>result = tokio::time::timeout(std::time::Duration::from_secs(<span class="number">5</span>), <span class="kw">async </span>{
+<a href=#2180 id=2180 data-nosnippet>2180</a> table_scan
+<a href=#2181 id=2181 data-nosnippet>2181</a> .plan_files()
+<a href=#2182 id=2182 data-nosnippet>2182</a> .<span class="kw">await
+<a href=#2183 id=2183 data-nosnippet>2183</a> </span>.unwrap()
+<a href=#2184 id=2184 data-nosnippet>2184</a> .try_collect::<Vec<<span class="kw">_</span>>>()
+<a href=#2185 id=2185 data-nosnippet>2185</a> .<span class="kw">await
+<a href=#2186 id=2186 data-nosnippet>2186</a> </span>})
+<a href=#2187 id=2187 data-nosnippet>2187</a> .<span class="kw">await</span>;
+<a href=#2188 id=2188 data-nosnippet>2188</a>
+<a href=#2189 id=2189 data-nosnippet>2189</a> <span class="comment">// Assert it finished (didn't timeout)
+<a href=#2190 id=2190 data-nosnippet>2190</a> </span><span class="macro">assert!</span>(result.is_ok(), <span class="string">"Scan timed out - deadlock detected"</span>);
+<a href=#2191 id=2191 data-nosnippet>2191</a> }
+<a href=#2192 id=2192 data-nosnippet>2192</a>}
</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/src/iceberg/util/mod.rs.html b/api/src/iceberg/util/mod.rs.html
new file mode 100644
index 000000000..348ba1ff0
--- /dev/null
+++ b/api/src/iceberg/util/mod.rs.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `crates/iceberg/src/util/mod.rs`."><title>mod.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,Fira [...]
+<a href=#2 id=2 data-nosnippet>2</a>// or more contributor license agreements. See the NOTICE file
+<a href=#3 id=3 data-nosnippet>3</a>// distributed with this work for additional information
+<a href=#4 id=4 data-nosnippet>4</a>// regarding copyright ownership. The ASF licenses this file
+<a href=#5 id=5 data-nosnippet>5</a>// to you under the Apache License, Version 2.0 (the
+<a href=#6 id=6 data-nosnippet>6</a>// "License"); you may not use this file except in compliance
+<a href=#7 id=7 data-nosnippet>7</a>// with the License. You may obtain a copy of the License at
+<a href=#8 id=8 data-nosnippet>8</a>//
+<a href=#9 id=9 data-nosnippet>9</a>// http://www.apache.org/licenses/LICENSE-2.0
+<a href=#10 id=10 data-nosnippet>10</a>//
+<a href=#11 id=11 data-nosnippet>11</a>// Unless required by applicable law or agreed to in writing,
+<a href=#12 id=12 data-nosnippet>12</a>// software distributed under the License is distributed on an
+<a href=#13 id=13 data-nosnippet>13</a>// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+<a href=#14 id=14 data-nosnippet>14</a>// KIND, either express or implied. See the License for the
+<a href=#15 id=15 data-nosnippet>15</a>// specific language governing permissions and limitations
+<a href=#16 id=16 data-nosnippet>16</a>// under the License.
+<a href=#17 id=17 data-nosnippet>17</a>
+<a href=#18 id=18 data-nosnippet>18</a></span><span class="kw">use </span>std::num::NonZeroUsize;
+<a href=#19 id=19 data-nosnippet>19</a>
+<a href=#20 id=20 data-nosnippet>20</a><span class="doccomment">/// Utilities for working with snapshots.
+<a href=#21 id=21 data-nosnippet>21</a></span><span class="kw">pub mod </span>snapshot;
+<a href=#22 id=22 data-nosnippet>22</a>
+<a href=#23 id=23 data-nosnippet>23</a><span class="comment">// Use a default value of 1 as the safest option.
+<a href=#24 id=24 data-nosnippet>24</a>// See https://doc.rust-lang.org/std/thread/fn.available_parallelism.html#limitations
+<a href=#25 id=25 data-nosnippet>25</a>// for more details.
+<a href=#26 id=26 data-nosnippet>26</a></span><span class="kw">const </span>DEFAULT_PARALLELISM: usize = <span class="number">1</span>;
+<a href=#27 id=27 data-nosnippet>27</a>
+<a href=#28 id=28 data-nosnippet>28</a><span class="doccomment">/// Uses [`std::thread::available_parallelism`] in order to
+<a href=#29 id=29 data-nosnippet>29</a>/// retrieve an estimate of the default amount of parallelism
+<a href=#30 id=30 data-nosnippet>30</a>/// that should be used. Note that [`std::thread::available_parallelism`]
+<a href=#31 id=31 data-nosnippet>31</a>/// returns a `Result` as it can fail, so here we use
+<a href=#32 id=32 data-nosnippet>32</a>/// a default value instead.
+<a href=#33 id=33 data-nosnippet>33</a>/// Note: we don't use a OnceCell or LazyCell here as there
+<a href=#34 id=34 data-nosnippet>34</a>/// are circumstances where the level of available
+<a href=#35 id=35 data-nosnippet>35</a>/// parallelism can change during the lifetime of an executing
+<a href=#36 id=36 data-nosnippet>36</a>/// process, but this should not be called in a hot loop.
+<a href=#37 id=37 data-nosnippet>37</a></span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>available_parallelism() -> NonZeroUsize {
+<a href=#38 id=38 data-nosnippet>38</a> std::thread::available_parallelism().unwrap_or_else(|_err| {
+<a href=#39 id=39 data-nosnippet>39</a> <span class="comment">// Failed to get the level of parallelism.
+<a href=#40 id=40 data-nosnippet>40</a> // TODO: log/trace when this fallback occurs.
+<a href=#41 id=41 data-nosnippet>41</a>
+<a href=#42 id=42 data-nosnippet>42</a> // Using a default value.
+<a href=#43 id=43 data-nosnippet>43</a> </span>NonZeroUsize::new(DEFAULT_PARALLELISM).unwrap()
+<a href=#44 id=44 data-nosnippet>44</a> })
+<a href=#45 id=45 data-nosnippet>45</a>}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/src/iceberg/util/snapshot.rs.html b/api/src/iceberg/util/snapshot.rs.html
new file mode 100644
index 000000000..f2b4db02d
--- /dev/null
+++ b/api/src/iceberg/util/snapshot.rs.html
@@ -0,0 +1,186 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `crates/iceberg/src/util/snapshot.rs`."><title>snapshot.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade. [...]
+<a href=#2 id=2 data-nosnippet>2</a>// or more contributor license agreements. See the NOTICE file
+<a href=#3 id=3 data-nosnippet>3</a>// distributed with this work for additional information
+<a href=#4 id=4 data-nosnippet>4</a>// regarding copyright ownership. The ASF licenses this file
+<a href=#5 id=5 data-nosnippet>5</a>// to you under the Apache License, Version 2.0 (the
+<a href=#6 id=6 data-nosnippet>6</a>// "License"); you may not use this file except in compliance
+<a href=#7 id=7 data-nosnippet>7</a>// with the License. You may obtain a copy of the License at
+<a href=#8 id=8 data-nosnippet>8</a>//
+<a href=#9 id=9 data-nosnippet>9</a>// http://www.apache.org/licenses/LICENSE-2.0
+<a href=#10 id=10 data-nosnippet>10</a>//
+<a href=#11 id=11 data-nosnippet>11</a>// Unless required by applicable law or agreed to in writing,
+<a href=#12 id=12 data-nosnippet>12</a>// software distributed under the License is distributed on an
+<a href=#13 id=13 data-nosnippet>13</a>// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+<a href=#14 id=14 data-nosnippet>14</a>// KIND, either express or implied. See the License for the
+<a href=#15 id=15 data-nosnippet>15</a>// specific language governing permissions and limitations
+<a href=#16 id=16 data-nosnippet>16</a>// under the License.
+<a href=#17 id=17 data-nosnippet>17</a>
+<a href=#18 id=18 data-nosnippet>18</a></span><span class="kw">use </span><span class="kw">crate</span>::spec::{SnapshotRef, TableMetadataRef};
+<a href=#19 id=19 data-nosnippet>19</a>
+<a href=#20 id=20 data-nosnippet>20</a><span class="kw">struct </span>Ancestors {
+<a href=#21 id=21 data-nosnippet>21</a> next: <span class="prelude-ty">Option</span><SnapshotRef>,
+<a href=#22 id=22 data-nosnippet>22</a> get_snapshot: Box<<span class="kw">dyn </span>Fn(i64) -> <span class="prelude-ty">Option</span><SnapshotRef> + Send>,
+<a href=#23 id=23 data-nosnippet>23</a>}
+<a href=#24 id=24 data-nosnippet>24</a>
+<a href=#25 id=25 data-nosnippet>25</a><span class="kw">impl </span>Iterator <span class="kw">for </span>Ancestors {
+<a href=#26 id=26 data-nosnippet>26</a> <span class="kw">type </span>Item = SnapshotRef;
+<a href=#27 id=27 data-nosnippet>27</a>
+<a href=#28 id=28 data-nosnippet>28</a> <span class="kw">fn </span>next(<span class="kw-2">&mut </span><span class="self">self</span>) -> <span class="prelude-ty">Option</span><<span class="self">Self</span>::Item> {
+<a href=#29 id=29 data-nosnippet>29</a> <span class="kw">let </span>snapshot = <span class="self">self</span>.next.take()<span class="question-mark">?</span>;
+<a href=#30 id=30 data-nosnippet>30</a> <span class="self">self</span>.next = snapshot
+<a href=#31 id=31 data-nosnippet>31</a> .parent_snapshot_id()
+<a href=#32 id=32 data-nosnippet>32</a> .and_then(|id| (<span class="self">self</span>.get_snapshot)(id));
+<a href=#33 id=33 data-nosnippet>33</a> <span class="prelude-val">Some</span>(snapshot)
+<a href=#34 id=34 data-nosnippet>34</a> }
+<a href=#35 id=35 data-nosnippet>35</a>}
+<a href=#36 id=36 data-nosnippet>36</a>
+<a href=#37 id=37 data-nosnippet>37</a><span class="doccomment">/// Iterate starting from `snapshot_id` (inclusive) to the root snapshot.
+<a href=#38 id=38 data-nosnippet>38</a></span><span class="kw">pub fn </span>ancestors_of(
+<a href=#39 id=39 data-nosnippet>39</a> table_metadata: <span class="kw-2">&</span>TableMetadataRef,
+<a href=#40 id=40 data-nosnippet>40</a> snapshot_id: i64,
+<a href=#41 id=41 data-nosnippet>41</a>) -> <span class="kw">impl </span>Iterator<Item = SnapshotRef> + Send {
+<a href=#42 id=42 data-nosnippet>42</a> <span class="kw">let </span>initial = table_metadata.snapshot_by_id(snapshot_id).cloned();
+<a href=#43 id=43 data-nosnippet>43</a> <span class="kw">let </span>table_metadata = table_metadata.clone();
+<a href=#44 id=44 data-nosnippet>44</a> Ancestors {
+<a href=#45 id=45 data-nosnippet>45</a> next: initial,
+<a href=#46 id=46 data-nosnippet>46</a> get_snapshot: Box::new(<span class="kw">move </span>|id| table_metadata.snapshot_by_id(id).cloned()),
+<a href=#47 id=47 data-nosnippet>47</a> }
+<a href=#48 id=48 data-nosnippet>48</a>}
+<a href=#49 id=49 data-nosnippet>49</a>
+<a href=#50 id=50 data-nosnippet>50</a><span class="doccomment">/// Iterate starting from `latest_snapshot_id` (inclusive) to `oldest_snapshot_id` (exclusive).
+<a href=#51 id=51 data-nosnippet>51</a></span><span class="kw">pub fn </span>ancestors_between(
+<a href=#52 id=52 data-nosnippet>52</a> table_metadata: <span class="kw-2">&</span>TableMetadataRef,
+<a href=#53 id=53 data-nosnippet>53</a> latest_snapshot_id: i64,
+<a href=#54 id=54 data-nosnippet>54</a> oldest_snapshot_id: <span class="prelude-ty">Option</span><i64>,
+<a href=#55 id=55 data-nosnippet>55</a>) -> <span class="kw">impl </span>Iterator<Item = SnapshotRef> + Send {
+<a href=#56 id=56 data-nosnippet>56</a> ancestors_of(table_metadata, latest_snapshot_id).take_while(<span class="kw">move </span>|snapshot| {
+<a href=#57 id=57 data-nosnippet>57</a> oldest_snapshot_id
+<a href=#58 id=58 data-nosnippet>58</a> .map(|id| snapshot.snapshot_id() != id)
+<a href=#59 id=59 data-nosnippet>59</a> .unwrap_or(<span class="bool-val">true</span>)
+<a href=#60 id=60 data-nosnippet>60</a> })
+<a href=#61 id=61 data-nosnippet>61</a>}
+<a href=#62 id=62 data-nosnippet>62</a>
+<a href=#63 id=63 data-nosnippet>63</a><span class="attr">#[cfg(test)]
+<a href=#64 id=64 data-nosnippet>64</a></span><span class="kw">mod </span>tests {
+<a href=#65 id=65 data-nosnippet>65</a> <span class="kw">use super</span>::<span class="kw-2">*</span>;
+<a href=#66 id=66 data-nosnippet>66</a> <span class="kw">use </span><span class="kw">crate</span>::scan::tests::TableTestFixture;
+<a href=#67 id=67 data-nosnippet>67</a>
+<a href=#68 id=68 data-nosnippet>68</a> <span class="comment">// Five snapshots chained as: S1 (root) -> S2 -> S3 -> S4 -> S5 (current)
+<a href=#69 id=69 data-nosnippet>69</a> </span><span class="kw">const </span>S1: i64 = <span class="number">3051729675574597004</span>;
+<a href=#70 id=70 data-nosnippet>70</a> <span class="kw">const </span>S2: i64 = <span class="number">3055729675574597004</span>;
+<a href=#71 id=71 data-nosnippet>71</a> <span class="kw">const </span>S3: i64 = <span class="number">3056729675574597004</span>;
+<a href=#72 id=72 data-nosnippet>72</a> <span class="kw">const </span>S4: i64 = <span class="number">3057729675574597004</span>;
+<a href=#73 id=73 data-nosnippet>73</a> <span class="kw">const </span>S5: i64 = <span class="number">3059729675574597004</span>;
+<a href=#74 id=74 data-nosnippet>74</a>
+<a href=#75 id=75 data-nosnippet>75</a> <span class="kw">fn </span>metadata() -> TableMetadataRef {
+<a href=#76 id=76 data-nosnippet>76</a> <span class="kw">let </span>fixture = TableTestFixture::new_with_deep_history();
+<a href=#77 id=77 data-nosnippet>77</a> std::sync::Arc::new(fixture.table.metadata().clone())
+<a href=#78 id=78 data-nosnippet>78</a> }
+<a href=#79 id=79 data-nosnippet>79</a>
+<a href=#80 id=80 data-nosnippet>80</a> <span class="comment">// --- ancestors_of ---
+<a href=#81 id=81 data-nosnippet>81</a>
+<a href=#82 id=82 data-nosnippet>82</a> </span><span class="attr">#[test]
+<a href=#83 id=83 data-nosnippet>83</a> </span><span class="kw">fn </span>test_ancestors_of_nonexistent_snapshot_returns_empty() {
+<a href=#84 id=84 data-nosnippet>84</a> <span class="kw">let </span>meta = metadata();
+<a href=#85 id=85 data-nosnippet>85</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_of(<span class="kw-2">&</span>meta, <span class="number">999</span>).map(|s| s.snapshot_id()).collect();
+<a href=#86 id=86 data-nosnippet>86</a> <span class="macro">assert!</span>(ids.is_empty());
+<a href=#87 id=87 data-nosnippet>87</a> }
+<a href=#88 id=88 data-nosnippet>88</a>
+<a href=#89 id=89 data-nosnippet>89</a> <span class="attr">#[test]
+<a href=#90 id=90 data-nosnippet>90</a> </span><span class="kw">fn </span>test_ancestors_of_root_returns_only_root() {
+<a href=#91 id=91 data-nosnippet>91</a> <span class="kw">let </span>meta = metadata();
+<a href=#92 id=92 data-nosnippet>92</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_of(<span class="kw-2">&</span>meta, S1).map(|s| s.snapshot_id()).collect();
+<a href=#93 id=93 data-nosnippet>93</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S1]);
+<a href=#94 id=94 data-nosnippet>94</a> }
+<a href=#95 id=95 data-nosnippet>95</a>
+<a href=#96 id=96 data-nosnippet>96</a> <span class="attr">#[test]
+<a href=#97 id=97 data-nosnippet>97</a> </span><span class="kw">fn </span>test_ancestors_of_leaf_returns_full_chain() {
+<a href=#98 id=98 data-nosnippet>98</a> <span class="kw">let </span>meta = metadata();
+<a href=#99 id=99 data-nosnippet>99</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_of(<span class="kw-2">&</span>meta, S5).map(|s| s.snapshot_id()).collect();
+<a href=#100 id=100 data-nosnippet>100</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S5, S4, S3, S2, S1]);
+<a href=#101 id=101 data-nosnippet>101</a> }
+<a href=#102 id=102 data-nosnippet>102</a>
+<a href=#103 id=103 data-nosnippet>103</a> <span class="attr">#[test]
+<a href=#104 id=104 data-nosnippet>104</a> </span><span class="kw">fn </span>test_ancestors_of_mid_chain_returns_partial_chain() {
+<a href=#105 id=105 data-nosnippet>105</a> <span class="kw">let </span>meta = metadata();
+<a href=#106 id=106 data-nosnippet>106</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_of(<span class="kw-2">&</span>meta, S3).map(|s| s.snapshot_id()).collect();
+<a href=#107 id=107 data-nosnippet>107</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S3, S2, S1]);
+<a href=#108 id=108 data-nosnippet>108</a> }
+<a href=#109 id=109 data-nosnippet>109</a>
+<a href=#110 id=110 data-nosnippet>110</a> <span class="attr">#[test]
+<a href=#111 id=111 data-nosnippet>111</a> </span><span class="kw">fn </span>test_ancestors_of_second_snapshot() {
+<a href=#112 id=112 data-nosnippet>112</a> <span class="kw">let </span>meta = metadata();
+<a href=#113 id=113 data-nosnippet>113</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_of(<span class="kw-2">&</span>meta, S2).map(|s| s.snapshot_id()).collect();
+<a href=#114 id=114 data-nosnippet>114</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S2, S1]);
+<a href=#115 id=115 data-nosnippet>115</a> }
+<a href=#116 id=116 data-nosnippet>116</a>
+<a href=#117 id=117 data-nosnippet>117</a> <span class="comment">// --- ancestors_between ---
+<a href=#118 id=118 data-nosnippet>118</a>
+<a href=#119 id=119 data-nosnippet>119</a> </span><span class="attr">#[test]
+<a href=#120 id=120 data-nosnippet>120</a> </span><span class="kw">fn </span>test_ancestors_between_same_id_returns_empty() {
+<a href=#121 id=121 data-nosnippet>121</a> <span class="kw">let </span>meta = metadata();
+<a href=#122 id=122 data-nosnippet>122</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, S3, <span class="prelude-val">Some</span>(S3))
+<a href=#123 id=123 data-nosnippet>123</a> .map(|s| s.snapshot_id())
+<a href=#124 id=124 data-nosnippet>124</a> .collect();
+<a href=#125 id=125 data-nosnippet>125</a> <span class="macro">assert!</span>(ids.is_empty());
+<a href=#126 id=126 data-nosnippet>126</a> }
+<a href=#127 id=127 data-nosnippet>127</a>
+<a href=#128 id=128 data-nosnippet>128</a> <span class="attr">#[test]
+<a href=#129 id=129 data-nosnippet>129</a> </span><span class="kw">fn </span>test_ancestors_between_no_oldest_returns_all_ancestors() {
+<a href=#130 id=130 data-nosnippet>130</a> <span class="kw">let </span>meta = metadata();
+<a href=#131 id=131 data-nosnippet>131</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, S5, <span class="prelude-val">None</span>)
+<a href=#132 id=132 data-nosnippet>132</a> .map(|s| s.snapshot_id())
+<a href=#133 id=133 data-nosnippet>133</a> .collect();
+<a href=#134 id=134 data-nosnippet>134</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S5, S4, S3, S2, S1]);
+<a href=#135 id=135 data-nosnippet>135</a> }
+<a href=#136 id=136 data-nosnippet>136</a>
+<a href=#137 id=137 data-nosnippet>137</a> <span class="attr">#[test]
+<a href=#138 id=138 data-nosnippet>138</a> </span><span class="kw">fn </span>test_ancestors_between_excludes_oldest_snapshot() {
+<a href=#139 id=139 data-nosnippet>139</a> <span class="kw">let </span>meta = metadata();
+<a href=#140 id=140 data-nosnippet>140</a> <span class="comment">// S5 down to (but not including) S2
+<a href=#141 id=141 data-nosnippet>141</a> </span><span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, S5, <span class="prelude-val">Some</span>(S2))
+<a href=#142 id=142 data-nosnippet>142</a> .map(|s| s.snapshot_id())
+<a href=#143 id=143 data-nosnippet>143</a> .collect();
+<a href=#144 id=144 data-nosnippet>144</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S5, S4, S3]);
+<a href=#145 id=145 data-nosnippet>145</a> }
+<a href=#146 id=146 data-nosnippet>146</a>
+<a href=#147 id=147 data-nosnippet>147</a> <span class="attr">#[test]
+<a href=#148 id=148 data-nosnippet>148</a> </span><span class="kw">fn </span>test_ancestors_between_adjacent_snapshots() {
+<a href=#149 id=149 data-nosnippet>149</a> <span class="kw">let </span>meta = metadata();
+<a href=#150 id=150 data-nosnippet>150</a> <span class="comment">// S3 down to (but not including) S2 — only S3 itself
+<a href=#151 id=151 data-nosnippet>151</a> </span><span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, S3, <span class="prelude-val">Some</span>(S2))
+<a href=#152 id=152 data-nosnippet>152</a> .map(|s| s.snapshot_id())
+<a href=#153 id=153 data-nosnippet>153</a> .collect();
+<a href=#154 id=154 data-nosnippet>154</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S3]);
+<a href=#155 id=155 data-nosnippet>155</a> }
+<a href=#156 id=156 data-nosnippet>156</a>
+<a href=#157 id=157 data-nosnippet>157</a> <span class="attr">#[test]
+<a href=#158 id=158 data-nosnippet>158</a> </span><span class="kw">fn </span>test_ancestors_between_leaf_and_root() {
+<a href=#159 id=159 data-nosnippet>159</a> <span class="kw">let </span>meta = metadata();
+<a href=#160 id=160 data-nosnippet>160</a> <span class="comment">// S5 down to (but not including) S1
+<a href=#161 id=161 data-nosnippet>161</a> </span><span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, S5, <span class="prelude-val">Some</span>(S1))
+<a href=#162 id=162 data-nosnippet>162</a> .map(|s| s.snapshot_id())
+<a href=#163 id=163 data-nosnippet>163</a> .collect();
+<a href=#164 id=164 data-nosnippet>164</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S5, S4, S3, S2]);
+<a href=#165 id=165 data-nosnippet>165</a> }
+<a href=#166 id=166 data-nosnippet>166</a>
+<a href=#167 id=167 data-nosnippet>167</a> <span class="attr">#[test]
+<a href=#168 id=168 data-nosnippet>168</a> </span><span class="kw">fn </span>test_ancestors_between_nonexistent_oldest_returns_full_chain() {
+<a href=#169 id=169 data-nosnippet>169</a> <span class="kw">let </span>meta = metadata();
+<a href=#170 id=170 data-nosnippet>170</a> <span class="comment">// oldest_snapshot_id doesn't exist in the chain, so take_while never stops
+<a href=#171 id=171 data-nosnippet>171</a> </span><span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, S5, <span class="prelude-val">Some</span>(<span class="number">999</span>))
+<a href=#172 id=172 data-nosnippet>172</a> .map(|s| s.snapshot_id())
+<a href=#173 id=173 data-nosnippet>173</a> .collect();
+<a href=#174 id=174 data-nosnippet>174</a> <span class="macro">assert_eq!</span>(ids, <span class="macro">vec!</span>[S5, S4, S3, S2, S1]);
+<a href=#175 id=175 data-nosnippet>175</a> }
+<a href=#176 id=176 data-nosnippet>176</a>
+<a href=#177 id=177 data-nosnippet>177</a> <span class="attr">#[test]
+<a href=#178 id=178 data-nosnippet>178</a> </span><span class="kw">fn </span>test_ancestors_between_nonexistent_latest_returns_empty() {
+<a href=#179 id=179 data-nosnippet>179</a> <span class="kw">let </span>meta = metadata();
+<a href=#180 id=180 data-nosnippet>180</a> <span class="kw">let </span>ids: Vec<i64> = ancestors_between(<span class="kw-2">&</span>meta, <span class="number">999</span>, <span class="prelude-val">Some</span>(S1))
+<a href=#181 id=181 data-nosnippet>181</a> .map(|s| s.snapshot_id())
+<a href=#182 id=182 data-nosnippet>182</a> .collect();
+<a href=#183 id=183 data-nosnippet>183</a> <span class="macro">assert!</span>(ids.is_empty());
+<a href=#184 id=184 data-nosnippet>184</a> }
+<a href=#185 id=185 data-nosnippet>185</a>}
+</code></pre></div></section></main></body></html>
\ No newline at end of file
diff --git a/api/src/iceberg/utils.rs.html b/api/src/iceberg/utils.rs.html
deleted file mode 100644
index 40a78eaa5..000000000
--- a/api/src/iceberg/utils.rs.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Source of the Rust file `crates/iceberg/src/utils.rs`."><title>utils.rs - source</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraS [...]
-<a href=#2 id=2 data-nosnippet>2</a>// or more contributor license agreements. See the NOTICE file
-<a href=#3 id=3 data-nosnippet>3</a>// distributed with this work for additional information
-<a href=#4 id=4 data-nosnippet>4</a>// regarding copyright ownership. The ASF licenses this file
-<a href=#5 id=5 data-nosnippet>5</a>// to you under the Apache License, Version 2.0 (the
-<a href=#6 id=6 data-nosnippet>6</a>// "License"); you may not use this file except in compliance
-<a href=#7 id=7 data-nosnippet>7</a>// with the License. You may obtain a copy of the License at
-<a href=#8 id=8 data-nosnippet>8</a>//
-<a href=#9 id=9 data-nosnippet>9</a>// http://www.apache.org/licenses/LICENSE-2.0
-<a href=#10 id=10 data-nosnippet>10</a>//
-<a href=#11 id=11 data-nosnippet>11</a>// Unless required by applicable law or agreed to in writing,
-<a href=#12 id=12 data-nosnippet>12</a>// software distributed under the License is distributed on an
-<a href=#13 id=13 data-nosnippet>13</a>// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-<a href=#14 id=14 data-nosnippet>14</a>// KIND, either express or implied. See the License for the
-<a href=#15 id=15 data-nosnippet>15</a>// specific language governing permissions and limitations
-<a href=#16 id=16 data-nosnippet>16</a>// under the License.
-<a href=#17 id=17 data-nosnippet>17</a>
-<a href=#18 id=18 data-nosnippet>18</a></span><span class="kw">use </span>std::num::NonZeroUsize;
-<a href=#19 id=19 data-nosnippet>19</a>
-<a href=#20 id=20 data-nosnippet>20</a><span class="comment">// Use a default value of 1 as the safest option.
-<a href=#21 id=21 data-nosnippet>21</a>// See https://doc.rust-lang.org/std/thread/fn.available_parallelism.html#limitations
-<a href=#22 id=22 data-nosnippet>22</a>// for more details.
-<a href=#23 id=23 data-nosnippet>23</a></span><span class="kw">const </span>DEFAULT_PARALLELISM: usize = <span class="number">1</span>;
-<a href=#24 id=24 data-nosnippet>24</a>
-<a href=#25 id=25 data-nosnippet>25</a><span class="doccomment">/// Uses [`std::thread::available_parallelism`] in order to
-<a href=#26 id=26 data-nosnippet>26</a>/// retrieve an estimate of the default amount of parallelism
-<a href=#27 id=27 data-nosnippet>27</a>/// that should be used. Note that [`std::thread::available_parallelism`]
-<a href=#28 id=28 data-nosnippet>28</a>/// returns a `Result` as it can fail, so here we use
-<a href=#29 id=29 data-nosnippet>29</a>/// a default value instead.
-<a href=#30 id=30 data-nosnippet>30</a>/// Note: we don't use a OnceCell or LazyCell here as there
-<a href=#31 id=31 data-nosnippet>31</a>/// are circumstances where the level of available
-<a href=#32 id=32 data-nosnippet>32</a>/// parallelism can change during the lifetime of an executing
-<a href=#33 id=33 data-nosnippet>33</a>/// process, but this should not be called in a hot loop.
-<a href=#34 id=34 data-nosnippet>34</a></span><span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>available_parallelism() -> NonZeroUsize {
-<a href=#35 id=35 data-nosnippet>35</a> std::thread::available_parallelism().unwrap_or_else(|_err| {
-<a href=#36 id=36 data-nosnippet>36</a> <span class="comment">// Failed to get the level of parallelism.
-<a href=#37 id=37 data-nosnippet>37</a> // TODO: log/trace when this fallback occurs.
-<a href=#38 id=38 data-nosnippet>38</a>
-<a href=#39 id=39 data-nosnippet>39</a> // Using a default value.
-<a href=#40 id=40 data-nosnippet>40</a> </span>NonZeroUsize::new(DEFAULT_PARALLELISM).unwrap()
-<a href=#41 id=41 data-nosnippet>41</a> })
-<a href=#42 id=42 data-nosnippet>42</a>}
-</code></pre></div></section></main></body></html>
\ No newline at end of file