Re: How to copy an HSSFSheet into another HSSFSheet which belongs to a different HSSFWorkbook.

Dan S <[email protected]> Tue, 13 May 2025 10:40:43 -0400
Newsgroups gmane.comp.jakarta.poi.user
Message-ID <CANeOZMRN3ivC+avdTxvjPToG2Ckv5WvTDsJy+9adnh-yBAg0gQ@mail.gmail.com>
--0000000000008547560635056bed
Content-Type: multipart/alternative; boundary="0000000000008547550635056beb"

--0000000000008547550635056beb
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

PJ,
 I am trying to use the copyRows as you suggested but I am hitting some
exceptions regarding formulas even though my data has no formulas. I took a
unit test of mine in which I was testing the bug I reported in
https://bz.apache.org/bugzilla/show_bug.cgi?id=3D69583 and refitted it with
an HSSFWorkbook along with my code which creates a new Workbook from each
Sheet of an existing Workbook. The unit code test is included as an
attachment. The stacktrace I get is:

[main] WARN org.apache.poi.POIDocument - DocumentSummaryInformation
property set came back as null
[main] WARN org.apache.poi.POIDocument - SummaryInformation property set
came back as null

java.lang.IllegalStateException: Cannot get a FORMULA value from a STRING
formula cell

at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:648)
at org.apache.poi.hssf.usermodel.HSSFCell.getCellFormula(HSSFCell.java:640)
at
org.apache.poi.hssf.usermodel.helpers.HSSFRowColShifter.updateRowFormulas(H=
SSFRowColShifter.java:74)
at
org.apache.poi.hssf.usermodel.helpers.HSSFRowShifter.updateRowFormulas(HSSF=
RowShifter.java:71)
at org.apache.poi.hssf.usermodel.HSSFRow.copyRowFrom(HSSFRow.java:853)
at
org.apache.nifi.excel.TestHSSFRowCopyRowFrom.test(TestHSSFRowCopyRowFrom.ja=
va:74)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)



On Mon, May 12, 2025 at 6:32=E2=80=AFPM Dan S <[email protected]> wrote:

> PJ,
> Thank you! That is very helpful and aligns very well with the XSSFSheet
> copyRows method in regards to use of CellCopyPolicy and CellCopyContext.
>
> On Mon, May 12, 2025 at 5:49=E2=80=AFPM PJ Fanning <[email protected]>=
 wrote:
>
>> There is copyRowFrom in HSSFRow.
>>
>>
>> https://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel/HSSFRow=
.html#copyRowFrom-org.apache.poi.ss.usermodel.Row-org.apache.poi.ss.usermod=
el.CellCopyPolicy-org.apache.poi.ss.usermodel.CellCopyContext-
>>
>> On Mon, 12 May 2025 at 21:54, Dan S <[email protected]> wrote:
>> >
>> > XSSFSheet has a copyRows method which allows for copying the contents =
of
>> > one XSSFSheet to another one. I do not see an equivalent method for an
>> > HSSFSheet. I see from this post
>> > <
>> https://lists.apache.org/[email protected]:dfr=3D2020-1-1|dto=3D2=
025-5-12:HSSFSheet%20copy
>> <https://lists.apache.org/[email protected]:dfr=3D2020-1-1%7Cdto=
=3D2025-5-12:HSSFSheet%20copy>
>> >
>> > a solution which allows copying for HSSFSheet and XSSFSheet. I just
>> want to
>> > make sure if that is a recommended way for HSSF and if not has there
>> been
>> > any change to POI that provides methods for this?
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>

--0000000000008547550635056beb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">PJ,<div>=C2=A0I am trying to use the copyRows as you sugge=
sted but I am hitting some exceptions regarding formulas even though my dat=
a has no formulas. I took a unit test of mine in which I was testing the bu=
g I reported in=C2=A0<a href=3D"https://bz.apache.org/bugzilla/show_bug.cgi=
?id=3D69583">https://bz.apache.org/bugzilla/show_bug.cgi?id=3D69583</a>=C2=
=A0and refitted it with an HSSFWorkbook along with my code which creates a =
new Workbook from each Sheet of an existing Workbook. The unit code test is=
 included as an attachment. The stacktrace=C2=A0I get is:</div><div><br></d=
iv><div><font face=3D"monospace">[main] WARN org.apache.poi.POIDocument - D=
ocumentSummaryInformation property set came back as null<br>[main] WARN org=
.apache.poi.POIDocument - SummaryInformation property set came back as null=
<br><br>java.lang.IllegalStateException: Cannot get a FORMULA value from a =
STRING formula cell<br><br>	at org.apache.poi.hssf.usermodel.HSSFCell.typeM=
ismatch(HSSFCell.java:648)<br>	at org.apache.poi.hssf.usermodel.HSSFCell.ge=
tCellFormula(HSSFCell.java:640)<br>	at org.apache.poi.hssf.usermodel.helper=
s.HSSFRowColShifter.updateRowFormulas(HSSFRowColShifter.java:74)<br>	at org=
.apache.poi.hssf.usermodel.helpers.HSSFRowShifter.updateRowFormulas(HSSFRow=
Shifter.java:71)<br>	at org.apache.poi.hssf.usermodel.HSSFRow.copyRowFrom(H=
SSFRow.java:853)<br>	at org.apache.nifi.excel.TestHSSFRowCopyRowFrom.test(T=
estHSSFRowCopyRowFrom.java:74)<br>	at java.base/java.lang.reflect.Method.in=
voke(Method.java:580)<br>	at java.base/java.util.ArrayList.forEach(ArrayLis=
t.java:1596)</font><br><font face=3D"monospace">	at java.base/java.util.Arr=
ayList.forEach(ArrayList.java:1596)</font><br></div><div><br></div><div><br=
></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Mon, May 12, 2025 at 6:32=E2=80=AFPM Dan S &lt;<a href=3D"mailto:=
[email protected]" target=3D"_blank">[email protected]</a>&gt; wrote:<br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">PJ,=
=C2=A0<div>Thank you! That is very helpful and aligns very well with the XS=
SFSheet copyRows method in regards to use of CellCopyPolicy and CellCopyCon=
text.</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"g=
mail_attr">On Mon, May 12, 2025 at 5:49=E2=80=AFPM PJ Fanning &lt;<a href=
=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>=
&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ther=
e is copyRowFrom in HSSFRow.<br>
<br>
<a href=3D"https://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel=
/HSSFRow.html#copyRowFrom-org.apache.poi.ss.usermodel.Row-org.apache.poi.ss=
.usermodel.CellCopyPolicy-org.apache.poi.ss.usermodel.CellCopyContext-" rel=
=3D"noreferrer" target=3D"_blank">https://poi.apache.org/apidocs/dev/org/ap=
ache/poi/hssf/usermodel/HSSFRow.html#copyRowFrom-org.apache.poi.ss.usermode=
l.Row-org.apache.poi.ss.usermodel.CellCopyPolicy-org.apache.poi.ss.usermode=
l.CellCopyContext-</a><br>
<br>
On Mon, 12 May 2025 at 21:54, Dan S &lt;<a href=3D"mailto:[email protected]=
" target=3D"_blank">[email protected]</a>&gt; wrote:<br>
&gt;<br>
&gt; XSSFSheet has a copyRows method which allows for copying the contents =
of<br>
&gt; one XSSFSheet to another one. I do not see an equivalent method for an=
<br>
&gt; HSSFSheet. I see from this post<br>
&gt; &lt;<a href=3D"https://lists.apache.org/[email protected]:dfr=
=3D2020-1-1%7Cdto=3D2025-5-12:HSSFSheet%20copy" rel=3D"noreferrer" target=
=3D"_blank">https://lists.apache.org/[email protected]:dfr=3D2020-1-=
1|dto=3D2025-5-12:HSSFSheet%20copy</a>&gt;<br>
&gt; a solution which allows copying for HSSFSheet and XSSFSheet. I just wa=
nt to<br>
&gt; make sure if that is a recommended way for HSSF and if not has there b=
een<br>
&gt; any change to POI that provides methods for this?<br>
<br>
---------------------------------------------------------------------<br>
To unsubscribe, e-mail: <a href=3D"mailto:[email protected]" =
target=3D"_blank">[email protected]</a><br>
For additional commands, e-mail: <a href=3D"mailto:[email protected]=
" target=3D"_blank">[email protected]</a><br>
<br>
</blockquote></div>
</blockquote></div>

--0000000000008547550635056beb--
--0000000000008547560635056bed
Content-Type: text/x-java; charset="US-ASCII"; name="TestHSSFRowCopyRowFrom.java"
Content-Disposition: attachment; filename="TestHSSFRowCopyRowFrom.java"
Content-Transfer-Encoding: base64
Content-ID: <f_mamm6bqk0>
X-Attachment-Id: f_mamm6bqk0

aW1wb3J0IG9yZy5hcGFjaGUucG9pLmhzc2YudXNlcm1vZGVsLkhTU0ZSb3c7CmltcG9ydCBvcmcu
YXBhY2hlLnBvaS5oc3NmLnVzZXJtb2RlbC5IU1NGU2hlZXQ7CmltcG9ydCBvcmcuYXBhY2hlLnBv
aS5oc3NmLnVzZXJtb2RlbC5IU1NGV29ya2Jvb2s7CmltcG9ydCBvcmcuYXBhY2hlLnBvaS5zcy51
c2VybW9kZWwuQ2VsbDsKaW1wb3J0IG9yZy5hcGFjaGUucG9pLnNzLnVzZXJtb2RlbC5DZWxsQ29w
eUNvbnRleHQ7CmltcG9ydCBvcmcuYXBhY2hlLnBvaS5zcy51c2VybW9kZWwuQ2VsbENvcHlQb2xp
Y3k7CmltcG9ydCBvcmcuYXBhY2hlLnBvaS5zcy51c2VybW9kZWwuQ2VsbFN0eWxlOwppbXBvcnQg
b3JnLmFwYWNoZS5wb2kuc3MudXNlcm1vZGVsLkNyZWF0aW9uSGVscGVyOwppbXBvcnQgb3JnLmFw
YWNoZS5wb2kuc3MudXNlcm1vZGVsLkRhdGVVdGlsOwppbXBvcnQgb3JnLmFwYWNoZS5wb2kuc3Mu
dXNlcm1vZGVsLlJvdzsKaW1wb3J0IG9yZy5hcGFjaGUucG9pLnNzLnVzZXJtb2RlbC5TaGVldDsK
aW1wb3J0IG9yZy5hcGFjaGUucG9pLnNzLnVzZXJtb2RlbC5Xb3JrYm9vazsKaW1wb3J0IG9yZy5q
dW5pdC5qdXBpdGVyLmFwaS5UZXN0OwoKaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJl
YW07CmltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKaW1wb3J0IGphdmEuaW8u
SU9FeGNlcHRpb247CmltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKaW1wb3J0IGphdmEubmlv
LmZpbGUuRmlsZXM7CmltcG9ydCBqYXZhLm5pby5maWxlLlBhdGhzOwppbXBvcnQgamF2YS50aW1l
LkxvY2FsRGF0ZVRpbWU7CmltcG9ydCBqYXZhLnRpbWUuTG9jYWxUaW1lOwppbXBvcnQgamF2YS50
aW1lLmZvcm1hdC5EYXRlVGltZUZvcm1hdHRlcjsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsK
CnB1YmxpYyBjbGFzcyBUZXN0SFNTRlJvd0NvcHlSb3dGcm9tIHsKICAgIEBUZXN0CiAgICB2b2lk
IHRlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIENlbGxDb3B5UG9saWN5IGNlbGxD
b3B5UG9saWN5ID0gbmV3IENlbGxDb3B5UG9saWN5LkJ1aWxkZXIoKQogICAgICAgICAgICAgICAg
LmNlbGxGb3JtdWxhKGZhbHNlKSAvLyBOT1RFOiBzZXR0aW5nIHRvIGZhbHNlIGFsbG93cyBmb3Ig
Y29weWluZyB0aGUgZXZhbHVhdGVkIGZvcm11bGEgdmFsdWUuCiAgICAgICAgICAgICAgICAuY2Vs
bFN0eWxlKENlbGxDb3B5UG9saWN5LkRFRkFVTFRfQ09QWV9DRUxMX1NUWUxFX1BPTElDWSkKICAg
ICAgICAgICAgICAgIC5jZWxsVmFsdWUoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9DT1BZX0NFTExf
VkFMVUVfUE9MSUNZKQogICAgICAgICAgICAgICAgLmNvbmRlbnNlUm93cyhDZWxsQ29weVBvbGlj
eS5ERUZBVUxUX0NPTkRFTlNFX1JPV1NfUE9MSUNZKQogICAgICAgICAgICAgICAgLmNvcHlIeXBl
cmxpbmsoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9DT1BZX0hZUEVSTElOS19QT0xJQ1kpCiAgICAg
ICAgICAgICAgICAubWVyZ2VIeXBlcmxpbmsoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9NRVJHRV9I
WVBFUkxJTktfUE9MSUNZKQogICAgICAgICAgICAgICAgLm1lcmdlZFJlZ2lvbnMoQ2VsbENvcHlQ
b2xpY3kuREVGQVVMVF9DT1BZX01FUkdFRF9SRUdJT05TX1BPTElDWSkKICAgICAgICAgICAgICAg
IC5yb3dIZWlnaHQoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9DT1BZX1JPV19IRUlHSFRfUE9MSUNZ
KQogICAgICAgICAgICAgICAgLmJ1aWxkKCk7CgogICAgICAgIGZpbmFsIExvY2FsRGF0ZVRpbWUg
bG9jYWxEYXRlVGltZSA9IExvY2FsRGF0ZVRpbWUub2YoMjAyMywgMSwgMSwgMCwgMCwgMCk7CiAg
ICAgICAgZmluYWwgTG9jYWxEYXRlVGltZSBub25WYWxpZEV4Y2VsRGF0ZSA9IExvY2FsRGF0ZVRp
bWUub2YoMTg5OSwgMTIsIDMxLCAwLCAwLCAwKTsKICAgICAgICBmaW5hbCBPYmplY3RbXVtdIGRh
dGEgPSB7CiAgICAgICAgICAgICAgICB7InRyYW5zYWN0aW9uX2lkIiwgInRyYW5zYWN0aW9uX2Rh
dGUiLCAidHJhbnNhY3Rpb25fdGltZSJ9LAogICAgICAgICAgICAgICAgezc1LCBsb2NhbERhdGVU
aW1lLCBub25WYWxpZEV4Y2VsRGF0ZS5wbHVzSG91cnMoOSkucGx1c01pbnV0ZXMoNTMpLnBsdXNT
ZWNvbmRzKDQ0KS50b0xvY2FsVGltZSgpfSwKICAgICAgICAgICAgICAgIHs3OCwgbG9jYWxEYXRl
VGltZSwgbm9uVmFsaWRFeGNlbERhdGUucGx1c0hvdXJzKDkpLnBsdXNNaW51dGVzKDU1KS5wbHVz
U2Vjb25kcygxNikudG9Mb2NhbFRpbWUoKX0KICAgICAgICB9OwoKICAgICAgICBmaW5hbCBCeXRl
QXJyYXlPdXRwdXRTdHJlYW0gd29ya2Jvb2tPdXRwdXRTdHJlYW0gPSBuZXcgQnl0ZUFycmF5T3V0
cHV0U3RyZWFtKCk7CiAgICAgICAgdHJ5IChXb3JrYm9vayB3b3JrYm9vayA9IG5ldyBIU1NGV29y
a2Jvb2soKSkgewogICAgICAgICAgICBmaW5hbCBTaGVldCBzaGVldCA9IHdvcmtib29rLmNyZWF0
ZVNoZWV0KCJTb21lU2hlZXROYW1lIik7CiAgICAgICAgICAgIHBvcHVsYXRlU2hlZXQoc2hlZXQs
IGRhdGEpOwogICAgICAgICAgICBzZXRDZWxsU3R5bGVzKHNoZWV0LCB3b3JrYm9vayk7CiAgICAg
ICAgICAgIHdvcmtib29rLndyaXRlKHdvcmtib29rT3V0cHV0U3RyZWFtKTsKICAgICAgICB9Cgog
ICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZpbmFsIEhTU0ZXb3JrYm9vayBvcmlnaW5hbFdvcmti
b29rID0gbmV3IEhTU0ZXb3JrYm9vayhuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0od29ya2Jvb2tP
dXRwdXRTdHJlYW0udG9CeXRlQXJyYXkoKSkpOwogICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxT
aGVldD4gb3JpZ2luYWxTaGVldHNJdGVyYXRvciA9IG9yaWdpbmFsV29ya2Jvb2suc2hlZXRJdGVy
YXRvcigpOwogICAgICAgICAgICBmaW5hbCBDZWxsQ29weUNvbnRleHQgY2VsbENvcHlDb250ZXh0
ID0gbmV3IENlbGxDb3B5Q29udGV4dCgpOwoKICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKICAg
ICAgICAgICAgd2hpbGUgKG9yaWdpbmFsU2hlZXRzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CiAgICAg
ICAgICAgICAgICBmaW5hbCBIU1NGU2hlZXQgb3JpZ2luYWxTaGVldCA9IChIU1NGU2hlZXQpIG9y
aWdpbmFsU2hlZXRzSXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgICAgZmluYWwgU3RyaW5n
IG9yaWdpbmFsU2hlZXROYW1lID0gb3JpZ2luYWxTaGVldC5nZXRTaGVldE5hbWUoKTsKICAgICAg
ICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFJvdz4gb3JpZ2luYWxSb3dzSXRlcmF0b3IgPSBvcmln
aW5hbFNoZWV0LnJvd0l0ZXJhdG9yKCk7CgogICAgICAgICAgICAgICAgdHJ5IChIU1NGV29ya2Jv
b2sgbmV3V29ya2Jvb2sgPSBuZXcgSFNTRldvcmtib29rKCkpIHsKICAgICAgICAgICAgICAgICAg
ICBmaW5hbCBIU1NGU2hlZXQgbmV3U2hlZXQgPSBuZXdXb3JrYm9vay5jcmVhdGVTaGVldChvcmln
aW5hbFNoZWV0TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG9yaWdpbmFsUm93c0l0
ZXJhdG9yLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBIU1NGUm93IG9yaWdp
bmFsUm93ID0gKEhTU0ZSb3cpIG9yaWdpbmFsUm93c0l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgSFNTRlJvdyBuZXdSb3cgPSBuZXdTaGVldC5jcmVhdGVSb3cob3JpZ2lu
YWxSb3cuZ2V0Um93TnVtKCkpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdSb3cuY29weVJv
d0Zyb20ob3JpZ2luYWxSb3csIGNlbGxDb3B5UG9saWN5LCBjZWxsQ29weUNvbnRleHQpOwogICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdHJ5IChmaW5hbCBPdXRwdXRT
dHJlYW0gb3V0ID0gRmlsZXMubmV3T3V0cHV0U3RyZWFtKFBhdGhzLmdldChTdHJpbmcuZm9ybWF0
KCJ0YXJnZXQvc2hlZXQtJXMueGxzIiwgaW5kZXgpKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3V29ya2Jvb2sud3JpdGUob3V0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgICB9CgogICAgICAg
IH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1
bnRpbWVFeGNlcHRpb24oIkZhaWxlZCB0byBzcGxpdCBYTFMgZmlsZSIsIGUpOwogICAgICAgIH0K
ICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2hlZXQoU2hlZXQgc2hlZXQs
IE9iamVjdFtdW10gZGF0YSkgewogICAgICAgIGludCByb3dDb3VudCA9IDA7CiAgICAgICAgZm9y
IChPYmplY3RbXSBkYXRhUm93IDogZGF0YSkgewogICAgICAgICAgICBSb3cgcm93ID0gc2hlZXQu
Y3JlYXRlUm93KHJvd0NvdW50KyspOwogICAgICAgICAgICBpbnQgY29sdW1uQ291bnQgPSAwOwoK
ICAgICAgICAgICAgZm9yIChPYmplY3QgZmllbGQgOiBkYXRhUm93KSB7CiAgICAgICAgICAgICAg
ICBDZWxsIGNlbGwgPSByb3cuY3JlYXRlQ2VsbChjb2x1bW5Db3VudCsrKTsKICAgICAgICAgICAg
ICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZyBzdHJp
bmcgLT4gY2VsbC5zZXRDZWxsVmFsdWUoc3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICBjYXNl
IEludGVnZXIgaW50ZWdlciAtPiBjZWxsLnNldENlbGxWYWx1ZShpbnRlZ2VyLmRvdWJsZVZhbHVl
KCkpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgTG9uZyBsIC0+IGNlbGwuc2V0Q2VsbFZhbHVl
KGwuZG91YmxlVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBMb2NhbERhdGVUaW1l
IGxvY2FsRGF0ZVRpbWUgLT4gY2VsbC5zZXRDZWxsVmFsdWUobG9jYWxEYXRlVGltZSk7CiAgICAg
ICAgICAgICAgICAgICAgY2FzZSBMb2NhbFRpbWUgbG9jYWxUaW1lIC0+IGNlbGwuc2V0Q2VsbFZh
bHVlKERhdGVVdGlsLmNvbnZlcnRUaW1lKERhdGVUaW1lRm9ybWF0dGVyLklTT19MT0NBTF9USU1F
LmZvcm1hdChsb2NhbFRpbWUpKSk7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCAtPiB7IH0K
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2b2lk
IHNldENlbGxTdHlsZXMoU2hlZXQgc2hlZXQsIFdvcmtib29rIHdvcmtib29rKSB7CiAgICAgICAg
Q3JlYXRpb25IZWxwZXIgY3JlYXRpb25IZWxwZXIgPSB3b3JrYm9vay5nZXRDcmVhdGlvbkhlbHBl
cigpOwogICAgICAgIENlbGxTdHlsZSBkYXlNb250aFllYXJDZWxsU3R5bGUgPSB3b3JrYm9vay5j
cmVhdGVDZWxsU3R5bGUoKTsKICAgICAgICBkYXlNb250aFllYXJDZWxsU3R5bGUuc2V0RGF0YUZv
cm1hdChjcmVhdGlvbkhlbHBlci5jcmVhdGVEYXRhRm9ybWF0KCkuZ2V0Rm9ybWF0KCJkZC9tbS95
eXl5IikpOwogICAgICAgIENlbGxTdHlsZSBob3VyTWludXRlU2Vjb25kID0gd29ya2Jvb2suY3Jl
YXRlQ2VsbFN0eWxlKCk7CiAgICAgICAgaG91ck1pbnV0ZVNlY29uZC5zZXREYXRhRm9ybWF0KChz
aG9ydCkgMjEpOyAvLyAyMSByZXByZXNlbnRzIGZvcm1hdCBoOm1tOnNzCiAgICAgICAgZm9yIChp
bnQgcm93TnVtID0gc2hlZXQuZ2V0Rmlyc3RSb3dOdW0oKSArIDE7IHJvd051bSA8IHNoZWV0Lmdl
dExhc3RSb3dOdW0oKSArIDE7IHJvd051bSsrKSB7CiAgICAgICAgICAgIFJvdyByb3cgPSBzaGVl
dC5nZXRSb3cocm93TnVtKTsKICAgICAgICAgICAgcm93LmdldENlbGwoMSkuc2V0Q2VsbFN0eWxl
KGRheU1vbnRoWWVhckNlbGxTdHlsZSk7CiAgICAgICAgICAgIHJvdy5nZXRDZWxsKDIpLnNldENl
bGxTdHlsZShob3VyTWludXRlU2Vjb25kKTsKICAgICAgICB9CiAgICB9Cn0K

--0000000000008547560635056bed
Content-Type: text/plain; charset=us-ascii


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
--0000000000008547560635056bed--