<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>189272</bug_id>
          
          <creation_ts>2018-09-04 13:54:03 -0700</creation_ts>
          <short_desc>[WTF] Add support for compactly storing multiple optional members in a class</short_desc>
          <delta_ts>2018-09-04 13:54:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456444</commentid>
    <comment_count>0</comment_count>
      <attachid>348845</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-09-04 13:54:03 -0700</bug_when>
    <thetext>Created attachment 348845
Proof of concept

When you have a class that has multiple std::optional members (and you aren&apos;t using CompactOptional from https://bugs.webkit.org/show_bug.cgi?id=189231) you end up wasting a lot of space due to the bool each std::optional must contain. I think we can do better.

An initial idea, attached as a proof of concept, is to store the bools all together as a bitset and have each optional member be able to access that bitset via some OBJECT_OFFSETOF fun. This requires a bit of macro nastiness and bit more typing per optional value, so I am not 100% sure it&apos;s worth it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>348845</attachid>
            <date>2018-09-04 13:54:03 -0700</date>
            <delta_ts>2018-09-04 13:54:03 -0700</delta_ts>
            <desc>Proof of concept</desc>
            <filename>Optionals.cpp</filename>
            <type>text/x-csrc</type>
            <size>9301</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">Ly8gYysrIC0tc3RkPWMrKzE0IE9wdGlvbmFscy5jcHAKCiNpbmNsdWRlIDxjYXNzZXJ0PgojaW5j
bHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpjbGFzcyBPcHRpb25hbHNCaXRTZXQgewogICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2VudW08
VD46OnZhbHVlLCAiVCBpcyBub3QgYW4gZW51bSB0eXBlIik7CiAgICB0eXBlZGVmIHR5cGVuYW1l
IHN0ZDo6bWFrZV91bnNpZ25lZDx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlw
ZT46OnR5cGUgU3RvcmFnZVR5cGU7CgpwdWJsaWM6CiAgICBjb25zdGV4cHIgT3B0aW9uYWxzQml0
U2V0KCkgPSBkZWZhdWx0OwoKICAgIGNvbnN0ZXhwciBTdG9yYWdlVHlwZSB0b1JhdygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RvcmFnZTsgfQoKICAgIGNvbnN0ZXhwciBib29sIGhhcyhUIG9wdGlvbikg
Y29uc3QgeyByZXR1cm4gbV9zdG9yYWdlICYgKDEgPDwgb3B0aW9uKTsgfQogICAgY29uc3RleHBy
IHZvaWQgc2V0KFQgb3B0aW9uKSB7IG1fc3RvcmFnZSB8PSAoMSA8PCBvcHRpb24pOyB9CiAgICBj
b25zdGV4cHIgdm9pZCBjbGVhcihUIG9wdGlvbikgeyBtX3N0b3JhZ2UgJj0gfigxIDw8IG9wdGlv
bik7IH0KCnByaXZhdGU6CiAgICBTdG9yYWdlVHlwZSBtX3N0b3JhZ2UgeyAwIH07Cn07CgovLyBG
cm9tIFN0ZExpYkV4dHJhcy5oCiNkZWZpbmUgT0JKRUNUX09GRlNFVE9GKGNsYXNzLCBmaWVsZCkg
KHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigmKHJlaW50ZXJwcmV0X2Nhc3Q8Y2xhc3MqPigw
eDQwMDApLT5maWVsZCkpIC0gMHg0MDAwKQoKLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vY29kZWNy
YWZ0LmNvLzIwMTQvMTEvMjUvdmFyaWFkaWMtbWFjcm9zLXRyaWNrcy8KI2RlZmluZSBfT1BUSU9O
QUxTX0dFVF9OVEhfQVJHKF8xLCBfMiwgXzMsIF80LCBfNSwgXzYsIF83LCBfOCwgXzksIF8xMCwg
TiwgLi4uKSBOCiNkZWZpbmUgX09QVElPTkFMU19mZV8wKF9jYWxsLCBvLCAuLi4pCiNkZWZpbmUg
X09QVElPTkFMU19mZV8xKF9jYWxsLCBvLCB4KSBfY2FsbChvLCB4KQojZGVmaW5lIF9PUFRJT05B
TFNfZmVfMihfY2FsbCwgbywgeCwgLi4uKSBfY2FsbChvLCB4KSBfT1BUSU9OQUxTX2ZlXzEoX2Nh
bGwsIG8sIF9fVkFfQVJHU19fKQojZGVmaW5lIF9PUFRJT05BTFNfZmVfMyhfY2FsbCwgbywgeCwg
Li4uKSBfY2FsbChvLCB4KSBfT1BUSU9OQUxTX2ZlXzIoX2NhbGwsIG8sIF9fVkFfQVJHU19fKQoj
ZGVmaW5lIF9PUFRJT05BTFNfZmVfNChfY2FsbCwgbywgeCwgLi4uKSBfY2FsbChvLCB4KSBfT1BU
SU9OQUxTX2ZlXzMoX2NhbGwsIG8sIF9fVkFfQVJHU19fKQojZGVmaW5lIF9PUFRJT05BTFNfZmVf
NShfY2FsbCwgbywgeCwgLi4uKSBfY2FsbChvLCB4KSBfT1BUSU9OQUxTX2ZlXzQoX2NhbGwsIG8s
IF9fVkFfQVJHU19fKQojZGVmaW5lIF9PUFRJT05BTFNfZmVfNihfY2FsbCwgbywgeCwgLi4uKSBf
Y2FsbChvLCB4KSBfT1BUSU9OQUxTX2ZlXzUoX2NhbGwsIG8sIF9fVkFfQVJHU19fKQojZGVmaW5l
IF9PUFRJT05BTFNfZmVfNyhfY2FsbCwgbywgeCwgLi4uKSBfY2FsbChvLCB4KSBfT1BUSU9OQUxT
X2ZlXzYoX2NhbGwsIG8sIF9fVkFfQVJHU19fKQojZGVmaW5lIF9PUFRJT05BTFNfZmVfOChfY2Fs
bCwgbywgeCwgLi4uKSBfY2FsbChvLCB4KSBfT1BUSU9OQUxTX2ZlXzcoX2NhbGwsIG8sIF9fVkFf
QVJHU19fKQojZGVmaW5lIF9PUFRJT05BTFNfZmVfOShfY2FsbCwgbywgeCwgLi4uKSBfY2FsbChv
LCB4KSBfT1BUSU9OQUxTX2ZlXzgoX2NhbGwsIG8sIF9fVkFfQVJHU19fKQojZGVmaW5lIF9PUFRJ
T05BTFNfQ0FMTF9NQUNST19YX0ZPUl9FQUNIKHgsIG8sIC4uLikgXAogICAgX09QVElPTkFMU19H
RVRfTlRIX0FSRygiaWdub3JlZCIsICMjX19WQV9BUkdTX18sIF9PUFRJT05BTFNfZmVfOSwgX09Q
VElPTkFMU19mZV84LCBfT1BUSU9OQUxTX2ZlXzcsIF9PUFRJT05BTFNfZmVfNiwgX09QVElPTkFM
U19mZV81LCBfT1BUSU9OQUxTX2ZlXzQsIF9PUFRJT05BTFNfZmVfMywgX09QVElPTkFMU19mZV8y
LCBfT1BUSU9OQUxTX2ZlXzEsIF9PUFRJT05BTFNfZmVfMCkoeCwgbywgIyNfX1ZBX0FSR1NfXykK
CiNkZWZpbmUgX09QVElPTkFMU19WQUxVRV9PRkZTRVRfQ0FTRShPd25lckNsYXNzLCBFbnVtVmFs
dWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBjYXNlIEVu
dW1WYWx1ZTogcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPd25lckNsYXNzLCBtXyMjRW51bVZhbHVl
KTsKI2RlZmluZSBPUFRJT05BTFNfREVGSU5JVElPTihPd25lckNsYXNzLCAuLi4pICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGVudW0g
T3B0aW9uYWxzVmFsdWVFbnVtIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICBfX1ZBX0FSR1NfXyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgIE9wdGlvbmFsc0JpdFNldDxPcHRpb25hbHNWYWx1ZUVudW0+IG1fYml0
czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSBPd25lciwgdHlwZW5hbWUgT3duZXI6Ok9w
dGlvbmFsc1ZhbHVlRW51bT4gZnJpZW5kIGNsYXNzIE9wdGlvbmFsc1ZhbHVlOyBcCiAgICBzdGF0
aWMgcHRyZGlmZl90IGJpdHNPZmZzZXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihP
d25lckNsYXNzLCBtX2JpdHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICBzdGF0aWMgcHRyZGlmZl90IHZhbHVlT2Zmc2V0KE9wdGlvbmFsc1ZhbHVlRW51bSBlbnVt
VmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgc3dpdGNoIChlbnVtVmFs
dWUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIF9PUFRJT05BTFNfQ0FMTF9NQUNST19Y
X0ZPUl9FQUNIKF9PUFRJT05BTFNfVkFMVUVfT0ZGU0VUX0NBU0UsIE93bmVyQ2xhc3MsIF9fVkFf
QVJHU19fKSBcCiAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBPd25lciwgdHlwZW5hbWUgT3duZXI6
Ok9wdGlvbmFsc1ZhbHVlRW51bSBlbnVtVmFsdWU+CmNsYXNzIE9wdGlvbmFsc1ZhbHVlIHsKcHVi
bGljOgogICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKICAgIHR5cGVkZWYgT3duZXIgT3duZXJUeXBl
OwogICAgdHlwZWRlZiBPcHRpb25hbHNCaXRTZXQ8dHlwZW5hbWUgT3duZXJUeXBlOjpPcHRpb25h
bHNWYWx1ZUVudW0+IEJpdFNldFR5cGU7CgoKICAgIC8vIERlYnVnZ2luZwogICAgdm9pZCBwcmlu
dFNpemVPZlZhbHVlVHlwZSgpIGNvbnN0IHsgcHJpbnRmKCJTaXplT2ZWYWx1ZVR5cGU6ICVsdVxu
Iiwgc2l6ZW9mKFZhbHVlVHlwZSkpOyB9CiAgICB2b2lkIHByaW50RW51bVZhbHVlKCkgY29uc3Qg
eyBwcmludGYoIkVudW1WYWx1ZTogJWRcbiIsIGVudW1WYWx1ZSk7IH0KICAgIHZvaWQgcHJpbnRW
YWx1ZU9mZnNldCgpIGNvbnN0IHsgcHJpbnRmKCJWYWx1ZU9mZnNldDogJXRkXG4iLCBPd25lclR5
cGU6OnZhbHVlT2Zmc2V0KGVudW1WYWx1ZSkpOyB9CiAgICB2b2lkIHByaW50Qml0c09mZnNldCgp
IGNvbnN0IHsgcHJpbnRmKCJCaXRzT2Zmc2V0OiAldGRcbiIsIE93bmVyVHlwZTo6Yml0c09mZnNl
dCgpKTsgfQogICAgdm9pZCBwcmludEJpdHNEaXN0YW5jZSgpIGNvbnN0IHsgcHJpbnRmKCJCaXRz
RGlzdGFuY2U6ICVkXG4iLCBiaXRzRGlzdGFuY2VGcm9tVGhpcygpKTsgfQogICAgdm9pZCBwcmlu
dFRoaXMoKSBjb25zdCB7IHByaW50ZigiVGhpczogJXBcbiIsIHRoaXMpOyB9CiAgICB2b2lkIHBy
aW50Qml0c0xvY2F0aW9uKCkgY29uc3QgeyBwcmludGYoIkJpdHNMb2NhdGlvbjogJXBcbiIsIGJp
dHMoKSk7IH0KICAgIHZvaWQgcHJpbnRCaXRzVmFsdWUoKSBjb25zdCB7IHByaW50ZigiQml0c1Zh
bHVlOiAleFxuIiwgYml0cygpLT50b1JhdygpKTsgfQoKCiAgICAvLyBBUEkKICAgIE9wdGlvbmFs
c1ZhbHVlKFZhbHVlVHlwZSB2YWx1ZSkKICAgICAgICA6IG1fdmFsdWUodmFsdWUpCiAgICB7CiAg
ICAgICAgYml0cygpLT5zZXQoZW51bVZhbHVlKTsKICAgIH0KCiAgICBPcHRpb25hbHNWYWx1ZSgp
ID0gZGVmYXVsdDsKCiAgICB2b2lkIHNldChWYWx1ZVR5cGUgdmFsdWUpIHsgbV92YWx1ZSA9IHZh
bHVlOyBiaXRzKCktPnNldChlbnVtVmFsdWUpOyB9CiAgICBib29sIGhhcygpIGNvbnN0IHsgcmV0
dXJuIGJpdHMoKS0+aGFzKGVudW1WYWx1ZSk7IH0KICAgIFZhbHVlVHlwZSB2YWx1ZSgpIGNvbnN0
IHsgYXNzZXJ0KGJpdHMoKS0+aGFzKGVudW1WYWx1ZSkpOyByZXR1cm4gbV92YWx1ZTsgfQogICAg
dm9pZCBjbGVhcigpIHsgYml0cygpLT5jbGVhcihlbnVtVmFsdWUpOyB9CiAgICBWYWx1ZVR5cGUg
dmFsdWVPcihWYWx1ZVR5cGUmJiBvdGhlcikgeyByZXR1cm4gaGFzKCkgPyB2YWx1ZSgpIDogb3Ro
ZXI7IH0KCnByaXZhdGU6CiAgICAvLyBCaXRzZXQgYWNjZXNzCiAgICB1bnNpZ25lZCBiaXRzRGlz
dGFuY2VGcm9tVGhpcygpIGNvbnN0IHsgcmV0dXJuIE93bmVyVHlwZTo6dmFsdWVPZmZzZXQoZW51
bVZhbHVlKSAtIE93bmVyVHlwZTo6Yml0c09mZnNldCgpOyB9CiAgICBCaXRTZXRUeXBlKiBiaXRz
KCkgY29uc3QgeyByZXR1cm4gKEJpdFNldFR5cGUqKSgoc2l6ZV90KXRoaXMgLSBiaXRzRGlzdGFu
Y2VGcm9tVGhpcygpKTsgfQoKICAgIFZhbHVlVHlwZSBtX3ZhbHVlOwp9OwoKY2xhc3MgVGVzdER1
bW15IHsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIGR1bW15VmlydHVhbEZ1bmN0aW9uKCkKICAg
IHsKICAgIH0KCiAgICBUZXN0RHVtbXkoKQogICAgICAgIDogbV92YWx1ZTEoNzUuNCkKICAgIHsK
ICAgIH0KCiAgICBhdXRvJiBnZXRWYWx1ZTEoKSB7IHJldHVybiBtX3ZhbHVlMTsgfQogICAgYXV0
byYgZ2V0VmFsdWUyKCkgeyByZXR1cm4gbV92YWx1ZTI7IH0KICAgIGF1dG8mIGJpdHMoKSBjb25z
dCB7IHJldHVybiBtX2JpdHM7IH0KCnByaXZhdGU6CiAgICAvLyBlbnVtIE9wdGlvbmFsc1ZhbHVl
RW51bSB7CiAgICAvLyAgICAgdmFsdWUxLAogICAgLy8gICAgIHZhbHVlMgogICAgLy8gfTsKICAg
IC8vCiAgICAvLyBPcHRpb25hbHNCaXRTZXQ8T3B0aW9uYWxzVmFsdWVFbnVtPiBtX2JpdHM7CiAg
ICAvLwogICAgLy8gdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lIE93bmVyLCB0eXBlbmFtZSBP
d25lcjo6T3B0aW9uYWxzVmFsdWVFbnVtPiBmcmllbmQgY2xhc3MgT3B0aW9uYWxzVmFsdWUKICAg
IC8vCiAgICAvLyBzdGF0aWMgdW5zaWduZWQgYml0c09mZnNldCgpIAogICAgLy8gewogICAgLy8g
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVGVzdER1bW15LCBtX2JpdHMpOwogICAgLy8gfQog
ICAgLy8KICAgIC8vIHN0YXRpYyB1bnNpZ25lZCB2YWx1ZU9mZnNldChPcHRpb25hbHNWYWx1ZUVu
dW0gdmFsdWUpCiAgICAvLyB7CiAgICAvLyAgICAgc3dpdGNoICh2YWx1ZSkgewogICAgLy8gICAg
IGNhc2UgdmFsdWUxOgogICAgLy8gICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRlc3RE
dW1teSwgbV92YWx1ZTEpOwogICAgLy8gICAgIGNhc2UgdmFsdWUyOgogICAgLy8gICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFRlc3REdW1teSwgbV92YWx1ZTIpOwogICAgLy8gICAgIH0K
ICAgIC8vIH0KCiAgICBPUFRJT05BTFNfREVGSU5JVElPTihUZXN0RHVtbXksIHZhbHVlMSwgdmFs
dWUyKTsKICAgIE9wdGlvbmFsc1ZhbHVlPGRvdWJsZSwgVGVzdER1bW15LCB2YWx1ZTE+IG1fdmFs
dWUxOwogICAgT3B0aW9uYWxzVmFsdWU8dW5zaWduZWQsIFRlc3REdW1teSwgdmFsdWUyPiBtX3Zh
bHVlMjsKfTsKCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKQp7CiAgICBU
ZXN0RHVtbXkgZHVtbXk7CgogICAgZHVtbXkuZ2V0VmFsdWUxKCkucHJpbnRTaXplT2ZWYWx1ZVR5
cGUoKTsKICAgIGR1bW15LmdldFZhbHVlMSgpLnByaW50RW51bVZhbHVlKCk7CiAgICBkdW1teS5n
ZXRWYWx1ZTEoKS5wcmludFZhbHVlT2Zmc2V0KCk7CiAgICBkdW1teS5nZXRWYWx1ZTEoKS5wcmlu
dEJpdHNPZmZzZXQoKTsKICAgIGR1bW15LmdldFZhbHVlMSgpLnByaW50Qml0c0Rpc3RhbmNlKCk7
CiAgICBkdW1teS5nZXRWYWx1ZTEoKS5wcmludFRoaXMoKTsKICAgIGR1bW15LmdldFZhbHVlMSgp
LnByaW50Qml0c0xvY2F0aW9uKCk7CiAgICBkdW1teS5nZXRWYWx1ZTEoKS5wcmludEJpdHNWYWx1
ZSgpOwogICAgZHVtbXkuZ2V0VmFsdWUyKCkucHJpbnRTaXplT2ZWYWx1ZVR5cGUoKTsKICAgIGR1
bW15LmdldFZhbHVlMigpLnByaW50RW51bVZhbHVlKCk7CiAgICBkdW1teS5nZXRWYWx1ZTIoKS5w
cmludFZhbHVlT2Zmc2V0KCk7CiAgICBkdW1teS5nZXRWYWx1ZTIoKS5wcmludEJpdHNPZmZzZXQo
KTsKICAgIGR1bW15LmdldFZhbHVlMigpLnByaW50Qml0c0Rpc3RhbmNlKCk7CiAgICBkdW1teS5n
ZXRWYWx1ZTIoKS5wcmludFRoaXMoKTsKICAgIGR1bW15LmdldFZhbHVlMigpLnByaW50Qml0c0xv
Y2F0aW9uKCk7CiAgICBkdW1teS5nZXRWYWx1ZTIoKS5wcmludEJpdHNWYWx1ZSgpOwoKCiAgICBw
cmludGYoIlxuSW5pdGlhbCBjb25kaXRpb25zXG4iKTsKICAgIHByaW50ZigibV92YWx1ZTEuaGFz
KCk6ICVzXG4iLCBkdW1teS5nZXRWYWx1ZTEoKS5oYXMoKSA/ICJZRVMiIDogIk5PIik7CiAgICBw
cmludGYoIm1fdmFsdWUyLmhhcygpOiAlc1xuIiwgZHVtbXkuZ2V0VmFsdWUyKCkuaGFzKCkgPyAi
WUVTIiA6ICJOTyIpOwogICAgcHJpbnRmKCJtX3ZhbHVlMS52YWx1ZSgpOiAlZlxuIiwgZHVtbXku
Z2V0VmFsdWUxKCkudmFsdWUoKSk7CiAgICBwcmludGYoIm1fYml0czogJXhcbiIsIGR1bW15LmJp
dHMoKS50b1JhdygpKTsKCgogICAgcHJpbnRmKCJcblNldHRpbmcgbV92YWx1ZTEgdG8gJWZcbiIs
IDIuNSk7CiAgICBkdW1teS5nZXRWYWx1ZTEoKS5zZXQoMi41KTsKICAgIHByaW50ZigibV92YWx1
ZTEuaGFzKCk6ICVzXG4iLCBkdW1teS5nZXRWYWx1ZTEoKS5oYXMoKSA/ICJZRVMiIDogIk5PIik7
CiAgICBwcmludGYoIm1fdmFsdWUyLmhhcygpOiAlc1xuIiwgZHVtbXkuZ2V0VmFsdWUyKCkuaGFz
KCkgPyAiWUVTIiA6ICJOTyIpOwogICAgcHJpbnRmKCJtX3ZhbHVlMS52YWx1ZSgpOiAlZlxuIiwg
ZHVtbXkuZ2V0VmFsdWUxKCkudmFsdWUoKSk7CiAgICBwcmludGYoIm1fYml0czogJXhcbiIsIGR1
bW15LmJpdHMoKS50b1JhdygpKTsKCgogICAgcHJpbnRmKCJcbkNsZWFyaW5nIG1fdmFsdWUxXG4i
KTsKICAgIGR1bW15LmdldFZhbHVlMSgpLmNsZWFyKCk7CiAgICBwcmludGYoIm1fdmFsdWUxLmhh
cygpOiAlc1xuIiwgZHVtbXkuZ2V0VmFsdWUxKCkuaGFzKCkgPyAiWUVTIiA6ICJOTyIpOwogICAg
cHJpbnRmKCJtX3ZhbHVlMi5oYXMoKTogJXNcbiIsIGR1bW15LmdldFZhbHVlMigpLmhhcygpID8g
IllFUyIgOiAiTk8iKTsKICAgIHByaW50ZigibV9iaXRzOiAleFxuIiwgZHVtbXkuYml0cygpLnRv
UmF3KCkpOwoKCiAgICBwcmludGYoIlxuU2V0dGluZyBtX3ZhbHVlMiB0byAlZFxuIiwgMTApOwog
ICAgZHVtbXkuZ2V0VmFsdWUyKCkuc2V0KDEwKTsKICAgIHByaW50ZigibV92YWx1ZTEuaGFzKCk6
ICVzXG4iLCBkdW1teS5nZXRWYWx1ZTEoKS5oYXMoKSA/ICJZRVMiIDogIk5PIik7CiAgICBwcmlu
dGYoIm1fdmFsdWUyLmhhcygpOiAlc1xuIiwgZHVtbXkuZ2V0VmFsdWUyKCkuaGFzKCkgPyAiWUVT
IiA6ICJOTyIpOwogICAgcHJpbnRmKCJtX3ZhbHVlMi52YWx1ZSgpOiAlZFxuIiwgZHVtbXkuZ2V0
VmFsdWUyKCkudmFsdWUoKSk7CiAgICBwcmludGYoIm1fYml0czogJXhcbiIsIGR1bW15LmJpdHMo
KS50b1JhdygpKTsKCgogICAgcHJpbnRmKCJcbkNsZWFyaW5nIG1fdmFsdWUyXG4iKTsKICAgIGR1
bW15LmdldFZhbHVlMigpLmNsZWFyKCk7CiAgICBwcmludGYoIm1fdmFsdWUxLmhhcygpOiAlc1xu
IiwgZHVtbXkuZ2V0VmFsdWUxKCkuaGFzKCkgPyAiWUVTIiA6ICJOTyIpOwogICAgcHJpbnRmKCJt
X3ZhbHVlMi5oYXMoKTogJXNcbiIsIGR1bW15LmdldFZhbHVlMigpLmhhcygpID8gIllFUyIgOiAi
Tk8iKTsKICAgIHByaW50ZigibV92YWx1ZTIudmFsdWVPcigxMDApOiAlZFxuIiwgZHVtbXkuZ2V0
VmFsdWUyKCkudmFsdWVPcigxMDApKTsKICAgIHByaW50ZigibV9iaXRzOiAleFxuIiwgZHVtbXku
Yml0cygpLnRvUmF3KCkpOwoKCiAgICBwcmludGYoIlxuU2V0dGluZyBib3RoIG1fdmFsdWUxIGFu
ZCBtX3ZhbHVlMlxuIik7CiAgICBkdW1teS5nZXRWYWx1ZTEoKS5zZXQoMCk7CiAgICBkdW1teS5n
ZXRWYWx1ZTIoKS5zZXQoMCk7CiAgICBwcmludGYoIm1fdmFsdWUxLmhhcygpOiAlc1xuIiwgZHVt
bXkuZ2V0VmFsdWUxKCkuaGFzKCkgPyAiWUVTIiA6ICJOTyIpOwogICAgcHJpbnRmKCJtX3ZhbHVl
Mi5oYXMoKTogJXNcbiIsIGR1bW15LmdldFZhbHVlMigpLmhhcygpID8gIllFUyIgOiAiTk8iKTsK
ICAgIHByaW50ZigibV9iaXRzOiAleFxuIiwgZHVtbXkuYml0cygpLnRvUmF3KCkpOwoKICAgIHJl
dHVybiAwOwp9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>