RE: Suggestion needed for a case of Lucene Migration with TokenStream

"Saha, Rajib" <[email protected]> Thu, 24 Apr 2025 07:37:08 +0000
Newsgroups gmane.comp.jakarta.lucene.user
Message-ID <DB9PR02MB8371B5C594C9C28F307FF1A690852@DB9PR02MB8371.eurprd02.prod.outlook.com>
VGhhbmtzIE1pa2hhaWwgZm9yIHRoZSBzdWdnZXN0aW9uLg0KTm93IHRoZSBwcmV2aW91cyBleGNl
cHRpb24gaGFzIGdvbmUuIEJ1dCBhIG5ldyBleGNlcHRpb24gaGFzIGNvbWUgZnJvbSBGaWVsZC5q
YXZhLg0KSGVyZSBiZWxvdyBhcmUgdGhlIGV4Y2VwdGlvbiBkZXRhaWxzLg0KPT09PT09PT0NCmph
dmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb246IFRva2VuU3RyZWFtIGZpZWxkcyBjYW5u
b3QgYmUgc3RvcmVkDQogICAgICAgIGF0IG9yZy5hcGFjaGUubHVjZW5lLmRvY3VtZW50LkZpZWxk
Ljxpbml0PihGaWVsZC5qYXZhOjE1NSkNCj09PT09PT09PQ0KDQpDYW4geW91IHBsZWFzZSBzdWdn
ZXN0IGhlcmUgdG9vPw0KDQpSZWdhcmRzDQpSYWppYg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2Fn
ZS0tLS0tDQpGcm9tOiBNaWtoYWlsIEtobHVkbmV2IDxta2hsQGFwYWNoZS5vcmc+DQpTZW50OiAy
NCBBcHJpbCAyMDI1IDEyOjEwDQpUbzogamF2YS11c2VyQGx1Y2VuZS5hcGFjaGUub3JnDQpTdWJq
ZWN0OiBSZTogU3VnZ2VzdGlvbiBuZWVkZWQgZm9yIGEgY2FzZSBvZiBMdWNlbmUgTWlncmF0aW9u
IHdpdGggVG9rZW5TdHJlYW0NCg0KSGkNClVzZSBUZXh0RmllbGQuVFlQRV9TVE9SRUQgYXMgdGhl
IHRoaXJkIGFyZ3VtZW50IGluIG5ldyBGaWVsZCgpDQpzZWUNCmh0dHBzOi8vZ2l0aHViLmNvbS9h
cGFjaGUvbHVjZW5lLXNvbHIvYmxvYi9lMjdmNDRlM2Q3OGRmY2VjMjMwYzk3ZTBhMTI0MGUzNzUx
ZGFlZmY5L2x1Y2VuZS9jb3JlL3NyYy9qYXZhL29yZy9hcGFjaGUvbHVjZW5lL2RvY3VtZW50L1Rl
eHRGaWVsZC5qYXZhI0wzNUMzMy1MMzVDNDQNCg0KDQpPbiBUaHUsIEFwciAyNCwgMjAyNSBhdCA4
OjM34oCvQU0gU2FoYSwgUmFqaWIgPHJhamliLnNhaGFAc2FwLmNvbS5pbnZhbGlkPg0Kd3JvdGU6
DQoNCj4gSGkgRXhwZXJ0cywNCj4NCj4gV2UgYXJlIG1pZ3JhdGluZyBMdWNlbmUgZnJvbSAyLjQu
MSB0byA4LjExLjIuDQo+DQo+IER1cmluZyBNaWdyYXRpb24gZm9yIGEgcGFydCBvZiBjb2RlLCB3
ZSBhcmUgZ2V0dGluZyBiZWxvdyBleGNlcHRpb24gaW4NCj4gOC4xMS4yIGJhc2VkIGNoYW5nZXMg
ZnJvbSBSZWQgbGluZSBjb2xvcmVkLg0KPiA9PT09PT09PT09PT09DQo+IGphdmEubGFuZy5JbGxl
Z2FsQXJndW1lbnRFeGNlcHRpb246IFRva2VuU3RyZWFtIGZpZWxkcyBtdXN0IGJlIGluZGV4ZWQg
YW5kDQo+IHRva2VuaXplZA0KPiBhdCBvcmcuYXBhY2hlLmx1Y2VuZS5kb2N1bWVudC5GaWVsZC48
aW5pdD4oRmllbGQuamF2YToxNTIpDQo+DQo+IEkgdGllZCBmZXcgb3B0aW9ucy4gQnV0LCBjb3Vs
ZCBub3QgYWJsZSB0byByZXNvbHZlIHRoZSBlcnJvci4gQmVpaXcNCj4gQ2FuIHNvbWVib2R5IG9m
IHlvdSBwbGVhc2UgaGVscCBtZSB0byBpZGVudGlmeSwgd2hlcmUgaXQgaXMgZ29pbmcgYXMgd3Jv
bmc/DQo+DQo+IFdlIGhhZCBjb2RlIGJhc2VkIG9uIDIuNC4xIGFzIGxpa2UgYmVsb3c6DQo+ID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IEludCBjdXJyZW50VmFsPA0KPiBo
dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPWN1cnJlbnRWYWwmcHJvamVj
dD0yMDI1X1JUTT4gPQ0KPiAvL3NvbWUgdmFsdWUNCj4gUGF5bG9hZFRva2VuU3RyZWFtPA0KPiBo
dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVBheWxvYWRUb2tlblN0cmVh
bSZwcm9qZWN0PTIwMjVfUlRNPg0KPiB0b2tlblN0cmVhbTwNCj4gaHR0cDovLzEwLjIzOC4yMzYu
MTAxOjgwODAvc291cmNlL3M/cmVmcz10b2tlblN0cmVhbSZwcm9qZWN0PTIwMjVfUlRNPiA9DQo+
IG5ldyBQYXlsb2FkVG9rZW5TdHJlYW08DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv
dXJjZS9zP2RlZnM9UGF5bG9hZFRva2VuU3RyZWFtJnByb2plY3Q9MjAyNV9SVE0NCj4gPigpOw0K
PiB0b2tlblN0cmVhbTwNCj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYv
MjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2Vy
dmljZXBsdWdpbnMvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9s
dWNlbmUvaW5kZXgvZW5naW5lL0x1Y2VuZUluZGV4RW5naW5lLmphdmEjdG9rZW5TdHJlYW0NCj4g
Pi5zZXRQYXlsb2FkPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZz
PXNldFBheWxvYWQmcHJvamVjdD0yMDI1X1JUTQ0KPiA+KGN1cnJlbnRWYWw8DQo+IGh0dHA6Ly8x
MC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9Y3VycmVudFZhbCZwcm9qZWN0PTIwMjVf
UlRNPik7DQo+IGx1Y0ZpZWxkPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uv
eHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2
YS9zZXJ2aWNlcGx1Z2lucy9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2Vh
cmNoL2x1Y2VuZS9pbmRleC9lbmdpbmUvTHVjZW5lSW5kZXhFbmdpbmUuamF2YSNsdWNGaWVsZD4N
Cj4gPSBuZXcgRmllbGQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2Rl
ZnM9RmllbGQmcHJvamVjdD0yMDI1X1JUTT4oY29uZmlnPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4x
MDE6ODA4MC9zb3VyY2Uvcz9kZWZzPWNvbmZpZyZwcm9qZWN0PTIwMjVfUlRNDQo+ID4ucGF5bG9h
ZFVpZDwNCj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1wYXlsb2Fk
VWlkJnByb2plY3Q9MjAyNV9SVE0NCj4gPigpLm5hbWU8aHR0cDovLzEwLjIzOC4yMzYuMTAxOjgw
ODAvc291cmNlL3M/ZGVmcz1uYW1lJnByb2plY3Q9MjAyNV9SVE0+LA0KPiB0b2tlblN0cmVhbTwN
Cj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZv
cm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2VydmljZXBsdWdpbnMvc3Jj
L2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9sdWNlbmUvaW5kZXgvZW5n
aW5lL0x1Y2VuZUluZGV4RW5naW5lLmphdmEjdG9rZW5TdHJlYW0NCj4gPik7DQo+IGRvYzxodHRw
Oi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPWRvYyZwcm9qZWN0PTIwMjVfUlRN
Pi5hZGQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9YWRkJnBy
b2plY3Q9MjAyNV9SVE0+KGx1Y0ZpZWxkPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9z
b3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdv
cmsvamF2YS9zZXJ2aWNlcGx1Z2lucy9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZv
cm0vc2VhcmNoL2x1Y2VuZS9pbmRleC9lbmdpbmUvTHVjZW5lSW5kZXhFbmdpbmUuamF2YSNsdWNG
aWVsZA0KPiA+KTsNCj4NCj4gLi4uLi4uDQo+IHB1YmxpYyBjbGFzcyBQYXlsb2FkVG9rZW5TdHJl
YW08DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9UGF5bG9hZFRv
a2VuU3RyZWFtJnByb2plY3Q9MjAyNV9SVE0+DQo+IGV4dGVuZHMgVG9rZW5TdHJlYW08DQo+IGh0
dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9VG9rZW5TdHJlYW0mcHJvamVj
dD0yMDI1X1JUTT57DQo+IHB1YmxpYyBzdGF0aWMgU3RyaW5nPA0KPiBodHRwOi8vMTAuMjM4LjIz
Ni4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVN0cmluZyZwcm9qZWN0PTIwMjVfUlRNPg0KPiBVSURf
UEFZTE9BRF9TVEFSVF9WQUw8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9z
P3JlZnM9VUlEX1BBWUxPQURfU1RBUlRfVkFMJnByb2plY3Q9MjAyNV9SVE0+DQo+ID0gIl9VSURf
IjsNCj4gICAgICAgICAgICAgICBwcml2YXRlIFRva2VuPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4x
MDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVRva2VuJnByb2plY3Q9MjAyNV9SVE0+IHRva2VuPA0KPiBo
dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPXRva2VuJnByb2plY3Q9MjAy
NV9SVE0+ID0gbmV3DQo+IFRva2VuPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9z
P2RlZnM9VG9rZW4mcHJvamVjdD0yMDI1X1JUTQ0KPiA+KFVJRF9QQVlMT0FEX1NUQVJUX1ZBTDwN
Cj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZv
cm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1
c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVh
bS5qYXZhI1VJRF9QQVlMT0FEX1NUQVJUX1ZBTA0KPiA+LDAsMCk7DQo+ICAgICAgICAgICAgICAg
cHJpdmF0ZSBieXRlW10gYnVmZmVyPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3Vy
Y2Uvcz9yZWZzPWJ1ZmZlciZwcm9qZWN0PTIwMjVfUlRNPiA9IG5ldw0KPiBieXRlWzRdOw0KPiAg
ICAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiByZXR1cm5Ub2tlbjwNCj4gaHR0cDovLzEwLjIz
OC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz1yZXR1cm5Ub2tlbiZwcm9qZWN0PTIwMjVfUlRN
PiA9DQo+IGZhbHNlOw0KPg0KPiAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFBheWxvYWQ8
DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9c2V0UGF5bG9hZCZw
cm9qZWN0PTIwMjVfUlRNPihpbnQNCj4gdWlkPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv
dXJjZS9zP3JlZnM9dWlkJnByb2plY3Q9MjAyNV9SVE0+KXsNCj4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBidWZmZXI8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94
cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZh
L3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRl
eC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXI+WzBdDQo+ID0gKGJ5dGUpdWlkPA0KPiBo
dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5z
ZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5l
c3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmph
dmEjdWlkDQo+ID47DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0KPiBo
dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5z
ZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5l
c3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmph
dmEjYnVmZmVyPlsxXQ0KPiA9IChieXRlKSh1aWQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4
MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2Zy
YW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2Vh
cmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4gPj4+OCk7DQo+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4x
MDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2
YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3Jt
L3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyPlsyXQ0KPiA9
IChieXRlKSh1aWQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIw
MjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9z
cmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXls
b2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4gPj4+MTYpOw0KPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlcjwNCj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hy
ZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEv
c2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4
L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI2J1ZmZlcj5bM10NCj4gPSAoYnl0ZSkodWlkPA0KPiBo
dHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5z
ZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5l
c3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmph
dmEjdWlkDQo+ID4+PjI0KTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjwN
Cj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZv
cm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1
c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVh
bS5qYXZhI3Rva2VuDQo+ID4uc2V0UGF5bG9hZDwNCj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgw
ODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJh
bWV3b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFy
Y2gvc2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI3NldFBheWxvYWQ+KG5ldw0KPiBQ
YXlsb2FkPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9UGF5bG9hZCZw
cm9qZWN0PTIwMjVfUlRNDQo+ID4oYnVmZmVyPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4
MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFt
ZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJj
aC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyDQo+ID4pKTsNCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5Ub2tlbiA9IHRydWU7DQo+ICAgICAgICAg
ICAgICAgfQ0KPiAgICAgICAgICAgICAgIHB1YmxpYyBUb2tlbjwNCj4gaHR0cDovLzEwLjIzOC4y
MzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1Ub2tlbiZwcm9qZWN0PTIwMjVfUlRNPiBuZXh0PA0K
PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPW5leHQmcHJvamVjdD0y
MDI1X1JUTT4oKSB0aHJvd3MNCj4gSU9FeGNlcHRpb248DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEw
MTo4MDgwL3NvdXJjZS9zP2RlZnM9SU9FeGNlcHRpb24mcHJvamVjdD0yMDI1X1JUTT57DQo+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldHVyblRva2VuPA0KPiBodHRwOi8vMTAu
MjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5z
ZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3Rz
L3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjcmV0dXJu
VG9rZW4+KXsNCj4gcmV0dXJuVG9rZW48DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv
dXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29y
ay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nk
ay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNyZXR1cm5Ub2tlbj4NCj4gPSBmYWxzZTsg
cmV0dXJuIHRva2VuPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8y
MDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsv
c3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5
bG9hZFRva2VuU3RyZWFtLmphdmEjdG9rZW4+Ow0KPiB9DQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7IHJldHVybiBudWxsPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4
MC9zb3VyY2Uvcz9kZWZzPW51bGwmcHJvamVjdD0yMDI1X1JUTT47IH0NCj4NCj4gICAgICAgICAg
ICAgICB9DQo+IH0NCj4NCj4NCj4gV2UgaGF2ZSBtYWRlIGNvZGUgYmFzZWQgb24gOC4xMS4yIGFz
IGxpa2UgYmVsb3c6DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KPiBQYXlsb2FkVG9rZW5TdHJlYW0gdG9rZW5TdHJlYW0gPSBuZXcgUGF5bG9hZFRva2VuU3Ry
ZWFtKCk7DQo+IHRva2VuU3RyZWFtLnNldFBheWxvYWQoY3VycmVudFZhbCk7DQo+IEZpZWxkVHlw
ZSBmaWVsZFR5cGUgPSBuZXcgRmllbGRUeXBlKCk7DQo+IGx1Y0ZpZWxkID0gbmV3IEZpZWxkKGNv
bmZpZy5wYXlsb2FkVWlkKCkubmFtZSwgdG9rZW5TdHJlYW0sIGZpZWxkVHlwZSk7DQo+IGRvYy5h
ZGQobHVjRmllbGQpOw0KPiAtLS0tDQo+IHB1YmxpYyBjbGFzcyBQYXlsb2FkVG9rZW5TdHJlYW08
DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9UGF5bG9hZFRva2Vu
U3RyZWFtJnByb2plY3Q9MjAyNV9SVE0+DQo+IGV4dGVuZHMgVG9rZW5TdHJlYW08DQo+IGh0dHA6
Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9VG9rZW5TdHJlYW0mcHJvamVjdD0y
MDI1X1JUTT57DQo+IHB1YmxpYyBzdGF0aWMgU3RyaW5nPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4x
MDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVN0cmluZyZwcm9qZWN0PTIwMjVfUlRNPg0KPiBVSURfUEFZ
TE9BRF9TVEFSVF9WQUw8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3Jl
ZnM9VUlEX1BBWUxPQURfU1RBUlRfVkFMJnByb2plY3Q9MjAyNV9SVE0+DQo+ID0gIl9VSURfIjsN
Cj4gcHJpdmF0ZSBieXRlW10gYnVmZmVyPA0KPiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9z
b3VyY2Uvcz9yZWZzPWJ1ZmZlciZwcm9qZWN0PTIwMjVfUlRNPiA9IG5ldw0KPiBieXRlWzRdOw0K
PiAgICAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiByZXR1cm5Ub2tlbjwNCj4gaHR0cDovLzEw
LjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz1yZXR1cm5Ub2tlbiZwcm9qZWN0PTIwMjVf
UlRNPiA9DQo+IGZhbHNlOw0KPg0KPiAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHNldFBheWxv
YWQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9c2V0UGF5bG9h
ZCZwcm9qZWN0PTIwMjVfUlRNPihpbnQNCj4gdWlkPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgw
L3NvdXJjZS9zP3JlZnM9dWlkJnByb2plY3Q9MjAyNV9SVE0+KXsNCj4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZmZXI8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJj
ZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9q
YXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9p
bmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXI+WzBdDQo+ID0gKGJ5dGUpdWlkPA0K
PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9y
bS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVz
aW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFt
LmphdmEjdWlkDQo+ID47DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0K
PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9y
bS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVz
aW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFt
LmphdmEjYnVmZmVyPlsxXQ0KPiA9IChieXRlKSh1aWQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEw
MTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZh
L2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0v
c2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4gPj4+OCk7DQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0KPiBodHRwOi8vMTAuMjM4LjIz
Ni4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2gu
amF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRm
b3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyPlsyXQ0K
PiA9IChieXRlKSh1aWQ8DQo+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVm
LzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nk
ay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9Q
YXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4gPj4+MTYpOw0KPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlcjwNCj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNl
L3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2ph
dmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2lu
ZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI2J1ZmZlcj5bM10NCj4gPSAoYnl0ZSkodWlkPA0K
PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9y
bS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVz
aW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFt
LmphdmEjdWlkDQo+ID4+PjI0KTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXls
b2FkQXR0cmlidXRlSW1wbCBhdHRyaWJ1dGVJbXBsID0gbmV3DQo+IFBheWxvYWRBdHRyaWJ1dGVJ
bXBsKG5ldyBCeXRlc1JlZihidWZmZXIpKTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFkZEF0dHJpYnV0ZUltcGwoYXR0cmlidXRlSW1wbCk7DQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuVG9rZW4gPSB0cnVlOw0KPiAgICAgICAgICAgICAgIH0NCj4gICAgICAg
ICAgICAgICBwdWJsaWMgYm9vbGVhbiBpbmNyZW1lbnRUb2tlbigpIHRocm93cyBJT0V4Y2VwdGlv
biB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldHVyblRva2VuKXsNCj4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblRva2VuID0g
ZmFsc2U7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KPiAgICAgICAgICAgICAgIH0NCj4gfQ0KPg0KPiBSZWdhcmRzDQo+IFJhamliDQo+DQo+
DQoNCi0tDQpTaW5jZXJlbHkgeW91cnMNCk1pa2hhaWwgS2hsdWRuZXYNCg==
DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGphdmEtdXNlci11
bnN1YnNjcmliZUBsdWNlbmUuYXBhY2hlLm9yZw0KRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMs
IGUtbWFpbDogamF2YS11c2VyLWhlbHBAbHVjZW5lLmFwYWNoZS5vcmcNCg0K