Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ReDoS 検出プログラム
 recheck の開発 / recheck: ReDoS check program

Db1b7e3c6fe6f6a0e9752b2c19bf5473?s=47 TSUYUSATO Kitsune
January 07, 2022
37

ReDoS 検出プログラム
 recheck の開発 / recheck: ReDoS check program

第63回 プログラミング・シンポジウム で発表した「ReDoS 検出プログラム
 recheck の開発」の発表スライドです。

Db1b7e3c6fe6f6a0e9752b2c19bf5473?s=128

TSUYUSATO Kitsune

January 07, 2022
Tweet

More Decks by TSUYUSATO Kitsune

Transcript

  1. ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ 3F%P4ݕग़ϓϩάϥϜ 
 SFDIFDLͷ։ൃ ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ 

  2. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ൃද಺༰  3F%P4ݕग़ϓϩάϥϜSFDIFDL 3F%P4੬ऑੑͱͦͷݕग़ํ๏ʹ͍ͭͯ؆୯ͷઆ໌ɾSFDIFDLͷ঺հ  ϑΝδϯάΛ༻͍ͨ3F%P4ݕग़ͷվળ ൃදऀͷओͳ3F%P4ݕग़ʹର͢ΔߩݙͰ͋ΔϑΝδϯάʹର͢Δվળ఺Λͭղઆ

     ࠓޙͷల๬ 
  3. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ൃද಺༰  3F%P4ݕग़ϓϩάϥϜSFDIFDL 3F%P4੬ऑੑͱͦͷݕग़ํ๏ʹ͍ͭͯ؆୯ͷઆ໌ɾSFDIFDLͷ঺հ  ϑΝδϯάΛ༻͍ͨ3F%P4ݕग़ͷվળ ൃදऀͷओͳ3F%P4ݕग़ʹର͢ΔߩݙͰ͋ΔϑΝδϯάʹର͢Δվળ఺Λͭղઆ

     ࠓޙͷల๬ 
  4. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ όοΫτϥοΩϯάͰͷϚονϯάͷ ࠷ѱܭࢉྔ ਖ਼نදݱʹґଘ  ࢦ਺త ΍ଟ߲ࣜత 

     ͜ΕΛ༻͍ͨܭࢉྔෳࡶੑ߈ܸʮ3F%P4ʯ ೥ʹ͸3F%P4͕ݪҼͰɼ ͕෼ؒͷαʔϏεμ΢ϯʹؕͬͨɽ Θ(2n) Θ(nd) d ≥ 2 ͦ΋ͦ΋3F%P4ͱ͸ʁ  /^(a|a)*$/.exec('a'.repeat(n) + 'b') 
 ͷ࣮ߦ࣌ؒ ࣮ߦ࣌ؒ ඵ       ܁Γฦ͠ճ਺O      IUUQTTUBDLTUBUVTOFUQPTUPVUBHFQPTUNPSUFNKVMZ
  5. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ 3F%P4ݕग़ͷཧ࿦ 3F%P4੬ऑੑ͸࣍ͷΑ͏ʹಛ௃෇͚ΒΕΔɽ ʮ͋Δਖ਼نදݱ ͷόοΫτϥοΩϯάͰͷϚονϯάͷ࠷ѱܭࢉྔ͕ 
 ɹೖྗจࣈྻͷ௕͞ ʹରͯ͠ࢦ਺త΋͘͠͸ଟ߲ࣜతͰ͋Δʯ

    ఆཧ <8ÛTUIPM[ 5"$"4> ਖ਼نදݱ ͕3F%P4੬ऑੑΛ࣋ͭɽ   ͱ౳Ձͳ/'"ͷભҠؔ਺͕࣍ͷ&%"ߏ଄΋͘͠͸*%"ߏ଄Λ࣋ͭɽ r n r ⟺ r  &%"ߏ଄ *%"ߏ଄
  6. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ཧ࿦ʹΑΔ3F%P4ݕग़ͷ໰୊఺ લϖʔδͷఆཧͰ3F%P4ݕग़͸Մೳɽ ࣮૷΋৭ʑ͋Δ<8FJEFNBO 1I%5IFTJT><8ÛTUIPM[ 5"$"4>ɽ ͔͠͠ɼཧ࿦ʹΑΔ3F%P4ݕग़ʹ͸࣍ͷΑ͏ͳ໰୊఺͕͋Δɽ w

    ݱ࣮ͷਖ਼نදݱʹ͸ޙํࢀরͱ͍ͬͨඇਖ਼نͳ֦ு͕͋Γɼ 
 ͦΕΒ΁ͷରԠ͕ࠔ೉ w ΦʔτϚτϯͷߏங΍ɼ&%"ߏ଄ɾ*%"ߏ଄ͷ୳ࡧͷܭࢉྔ͕େ͖͍ 
  7. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ཧ࿦ʹΑΔ3F%P4ݕग़ͱ͸ҟͳΔΞϓϩʔνͱͯ͠ɼ 
 ಈతղੳతͳϑΝδϯάʹΑΔ3F%P4ݕग़͕͋Δ<4IFO "4&>ɽ ϑΝδϯάʹΑΔ3F%P4ݕग़  ਖ਼نදݱ࣮૷

    GPPCBS  fi [[CV[[ IPHF IVHB େྔͷจࣈྻ ೖྗ BBBBC Ϛονϯάʹ͕࣌ؒ 
 ͔͔Δ΋ͷΛൃݟ 3F%P4੬ऑੑͱͯ͠ใࠂ Ҩ఻తΞϧΰϦζϜͰ 
 Ϛονϯά͕࣌ؒ૿Ճ͢ΔΑ͏ʹ 
 จࣈྻΛੜ੒ ϑΝδϯάͷྲྀΕ
  8. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϑΝδϯάʹΑΔ3F%P4ݕग़ͷ໰୊఺ ϑΝδϯάʹΑΔ3F%P4ݕग़͸ɼ ޙํࢀরΛ࣋ͭ৔߹Ͱ΋ରԠͰ͖ΔͳͲͷϝϦοτ͕͋Δ͕ʝʝɽ <4IFO "4&>ͷݚڀʹ͸࣍ͷΑ͏ͳ໰୊఺͕͋ͬͨɽ w ࣮ࡍͷਖ਼نදݱ࣮૷ʹ͍ۙ΋ͷΛར༻͢ΔͷͰɼݕग़ʹ͕͔͔࣌ؒΔɽ

    w ଟ߲ࣜతͳܭࢉྔͷ৔߹͸্ख͘ݕग़Ͱ͖ͳ͍ɽ 
  9. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ൃදऀ ౻࿘ ͷ3F%P4ݕग़ʹର͢Δߩݙ <ϑΝδϯάʹର͢Δվળ> w ੩తղੳʹΑΔҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͷܾఆ w

    ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻΛ࢖ͬͨҨ఻తϓϩάϥϛϯάతΞϓϩʔν w Ҩ఻తϓϩάϥϛϯάతΞϓϩʔνΛԠ༻ͨ͠ܭࢉྔͷ࣍਺ͷਪఆ w ద੾ͳϝϞԽઓུΛ༻͍ͨޮ཰తͳਖ਼نදݱϚονϯά࣮૷ʹΑΔϑΝδϯάͷߴ଎Խ <࢖༻͢ΔΞϧΰϦζϜͷ൑அج४> w ༩͑ΒΕͨਖ਼نදݱʹରͯ͠ɼཧ࿦ʹΑΔݕग़ͱϑΝδϯάʹΑΔݕग़ͷ 
 ͲͪΒ͕࣌ؒɾਫ਼౓తʹద੾͔Λ൑அ͢Δख๏ΛఏҊ <SFDIFDLͷ։ൃ> w ͜ΕΒΛ࣮૷ͨ͠3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃ 
  10. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ લ೥౓ͷൃදͱͷࠩ෼ <ϑΝδϯάʹର͢Δվળ> w ੩తղੳʹΑΔҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͷܾఆ w ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻΛ࢖ͬͨҨ఻తϓϩάϥϛϯάతΞϓϩʔν w

    Ҩ఻తϓϩάϥϛϯάతΞϓϩʔνΛԠ༻ͨ͠ܭࢉྔͷ࣍਺ͷਪఆ w ద੾ͳϝϞԽઓུΛ༻͍ͨޮ཰తͳਖ਼نදݱϚονϯά࣮૷ʹΑΔϑΝδϯάͷߴ଎Խ <࢖༻͢ΔΞϧΰϦζϜͷ൑அج४> w ༩͑ΒΕͨਖ਼نදݱʹରͯ͠ɼཧ࿦ʹΑΔݕग़ͱϑΝδϯάʹΑΔݕग़ͷ 
 ͲͪΒ͕࣌ؒɾਫ਼౓తʹద੾͔Λ൑அ͢Δख๏ΛఏҊ <SFDIFDLͷ։ൃ> w ͜ΕΒΛ࣮૷ͨ͠3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃ 
  11. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ 3F%P4ݕग़ϓϩάϥϜSFDIFDL w ཧ࿦ʹΑΔݕग़ΞϧΰϦζϜͱϑΝδϯάʹΑΔݕग़ΞϧΰϦζϜʹՃ͑ɼ 
 ద੾ͳΞϧΰϦζϜΛࣗಈͰબ୒͢ΔػೳΛඋ͑ͨ3F%P4ݕग़ϓϩάϥϜɽ w ݱࡏ͸+BWB4DSJQUͷਖ਼نදݱΛλʔήοτʹಈ࡞͢Δɽ

    w ൃදऀ ౻࿘ ͕೥ΑΓ։ൃΛߦͳ͍ͬͯͯɼ 
 .*5ϥΠηϯεͷ044ͱͯ͠ެ։͞Ε͍ͯΔɽ  IUUQTHJUIVCDPN.BLF/PX+VTU-BCPSFDIFDL
  12. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻  IUUQTNBLFOPXKVTUMBCPHJUIVCJPSFDIFDL

  13. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻  IUUQTNBLFOPXKVTUMBCPHJUIVCJPSFDIFDL ͜͜ʹਖ਼نදݱΛ ೖΕͯɼ ͜ͷϘλϯͰ 
 νΣοΫ։࢝

  14. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻  IUUQTNBLFOPXKVTUMBCPHJUIVCJPSFDIFDL ͜ͷਖ਼نදݱ͸ ੬ऑͩΑ ͜ͷจࣈྻͰ ߈ܸͰ͖ΔΑ ͜ͷลΓ͕

    ͋΍͍ͬ͠Ά͍
  15. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ൃද಺༰  3F%P4ݕग़ϓϩάϥϜSFDIFDL 3F%P4੬ऑੑͱͦͷݕग़ํ๏ʹ͍ͭͯ؆୯ͷઆ໌ɾSFDIFDLͷ঺հ  ϑΝδϯάΛ༻͍ͨ3F%P4ݕग़ͷվળ ൃදऀͷओͳ3F%P4ݕग़ʹର͢ΔߩݙͰ͋ΔϑΝδϯάʹର͢Δվળ఺Λͭղઆ

     ࠓޙͷల๬ 
  16. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϑΝδϯάʹΑΔ3F%P4ݕग़ͷվળ <վળ఺> w ੩తղੳʹΑΔҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͷܾఆ <վળ఺> w ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻΛ࢖ͬͨҨ఻తϓϩάϥϛϯάతΞϓϩʔν

    w Ҩ఻తϓϩάϥϛϯάతΞϓϩʔνΛԠ༻ͨ͠ܭࢉྔͷ࣍਺ͷਪఆ <վળ఺> w ద੾ͳϝϞԽઓུΛ༻͍ͨޮ཰తͳਖ਼نදݱϚονϯά࣮૷ʹΑΔ 
 ϑΝδϯάͷߴ଎Խ 
  17. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϑΝδϯάʹΑΔ3F%P4ݕग़ͷվળ<վળ఺> <վળ఺> w ੩తղੳʹΑΔҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͷܾఆ <վળ఺> w ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻΛ࢖ͬͨҨ఻తϓϩάϥϛϯάతΞϓϩʔν

    w Ҩ఻తϓϩάϥϛϯάతΞϓϩʔνΛԠ༻ͨ͠ܭࢉྔͷ࣍਺ͷਪఆ <վળ఺> w ద੾ͳϝϞԽઓུΛ༻͍ͨޮ཰తͳਖ਼نදݱϚονϯά࣮૷ʹΑΔ 
 ϑΝδϯάͷߴ଎Խ 
  18. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ੩తղੳʹΑΔ࠷ॳͷੈ୅ͷܾఆ ؍࡯&%"ߏ଄΍*%"ߏ଄ʹ͸ڞ௨ͯ͠ɼ 
 ؍࡯࣍ͷΑ͏ͳঢ়ଶͷ૊ ͕ଘࡏ͢Δɽ w จࣈ

    ͰͷભҠ͕௨Γ͋Δঢ়ଶ  w ΁ͱભҠͰ͖Δจࣈ ͰભҠ͕Ͱ͖ͯɼ 
 จࣈ ͰͷભҠ͕͋Δ  ஫&%"ߏ଄ͷ৔߹͸ (q1 , q2 ) a q1 q1 b a q2 q1 = q2 
  19. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ੩తղੳʹΑΔ࠷ॳͷੈ୅ͷܾఆ ͜͏ͨ͠ঢ়ଶͷ૊ ͸&%"ߏ଄΍*%"ߏ଄ΑΓ͸؆୯ʹൃݟͰ͖Δɽ Αͬͯɼ࣍ͷΑ͏ͳจࣈྻΛҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͱ͢Δ͜ͱͰɼ 
 ޮՌతʹϚονϯά࣌ؒͷ૿ՃΛಋ͘͜ͱ͕ظ଴͞ΕΔɽ ୈੈ୅ͷจࣈྻ

    
  
 (q1 , q2 ) w = w1 ⋅ (w2 )n ⋅ w3 w1 = ॳظঢ়ଶ͔Βq1 ΁ͱભҠ͢Δจࣈྻ, w2 = q1 ͔Βq2 ΁ͱભҠ͢Δจࣈྻ, w3 = q2 ͔Βडཧঢ়ଶҎ֎΁ͱભҠ͢Δจࣈྻ 
  20. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ /'"ʹม׵Ͱ͖ͳ͍৔߹ͷରॲ ͨͩ͠ɼਖ਼نදݱ͕/'"ʹ௚઀ม׵Ͱ͖ͳ͍ɼ΋͘͠͸ม׵͠ʹ͍͘৔߹͸ɼ 
 ࣍ͷΑ͏ͳࣄલॲཧΛ͢Δɽ w ޙํࢀরࢀরઌͷΩϟϓνϟͷ಺༰Ͱஔ͖׵͑Δɽ w

    ઌಡΈɾޙಡΈΞαʔγϣϯதͷਖ਼نදݱͰஔ͖׵͑Δɽ w ճ਺ͷଟ͍܁Γฦ͠*΍+ʹΑΔ܁Γฦ͠ʹஔ͖׵͑Δɽ  /(\w{1,64})\1(?<=foo)/ /(\w+)\w+(foo)/
  21. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ʰ੩తղੳʹΑΔ࠷ॳͷੈ୅ͷܾఆʱͷ੒Ռ w ਖ਼نදݱ͕੬ऑͳ৔߹ɼ੬ऑੑ͕Ҩ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅Ͱ 
 ݕग़͞ΕΔΑ͏ʹͳͬͨɽ ݟ͔ͭͬͨݸͷ੬ऑੑͷ͋Δਖ਼نදݱͷ͏ͪ 


    ݸ͕࠷ॳͷੈ୅Ͱݕग़͞Εͨ  w ͱ͸͍͑ɼόοΫτϥοΩϯάͷڍಈͳͲΛਖ਼֬ʹ࠶ݱ͍ͯ͠ͳ͍ͷͰɼ 
 Ҩ఻తΞϧΰϦζϜΛ࣮ߦ͠ͳ͚Ε͹ൃݟͰ͖ͳ͍੬ऑੑ΋ଘࡏ͢Δɽ 
  22. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϑΝδϯάʹΑΔ3F%P4ݕग़ͷվળ<վળ఺> <վળ఺> w ੩తղੳʹΑΔҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͷܾఆ <վળ఺> w ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻΛ࢖ͬͨҨ఻తϓϩάϥϛϯάతΞϓϩʔν

    w Ҩ఻తϓϩάϥϛϯάతΞϓϩʔνΛԠ༻ͨ͠ܭࢉྔͷ࣍਺ͷਪఆ <վળ఺> w ద੾ͳϝϞԽઓུΛ༻͍ͨޮ཰తͳਖ਼نදݱϚονϯά࣮૷ʹΑΔ 
 ϑΝδϯάͷߴ଎Խ 
  23. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻ ؍࡯&%"ߏ଄΍*%"ߏ଄͔ΒಘΒΕΔ ؍࡯߈ܸจࣈྻ͸ɼ ͷΑ͏ͳ ؍࡯܁Γฦ͠ߏ଄Λ࣋ͬͨܗΛ͍ͯ͠Δɽ ߟ࡯ϑΝδϯάͰੜ੒͞ΕΔจࣈྻʹ΋ ߟ࡯܁Γฦ͠ߏ଄Λ࣋ͨͤΕ͹Α͍ͷͰ͸ʁ

    u ⋅ wn ⋅ v 
  24. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻ ఆٛ ্ͷ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻͱ͸ɼ࣍ͷ੒෼ͷྻͰ͋Δɽ 
 ఆٛ෦෼จࣈྻ ΋͘͠͸ɼ܁Γฦ͠෦෼ 

     ྫ  ΛԿճ͔܁Γฦͨ͋͠ͱʹ ͕͘Δจࣈྻ  ஫܁Γฦ͠෦෼͸ωετ͠ͳ͍ɽ࣮ࡍʹ͸ྻʹΤϯίʔυͯ͠ɼޮ཰తʹ 
 Ҩ఻తΞϧΰϦζϜͷަ伹΍ಥવมҟΛॲཧ͢Δɽ  Ҩ఻తΞϧΰϦζϜͷ֤ݸମ͕୯ͳΔʮ஋ʯͰ͸ͳ͘ɼ 
 ߏ଄Λ࣋ͪύϥϝʔλͰ੍ޚͰ͖Δʮࣜʯʹͳ͍ͬͯΔˠҨ఻తϓϩάϥϛϯά Σ w ∈ Σ* (w)n w ∈ Σ* (aaa)nb aaa b 
  25. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϑΝδϯάͰͷҨ఻తϓϩάϥϛϯάͷར༻ ϑΝδϯάΛஈ֊ʹ෼͚Δɽ  ୳ࡧϑΣʔζ ߈ܸϑΣʔζ ߈ܸจࣈྻͷީิΛൃݟ খ͞Ίͷᮢ஋ͰϚονϯάΛߦ͍ɼ

    
 ߈ܸจࣈྻͷީิΛ୳ࡧ͢Δɽ ͜ͷͱ͖͸܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻͷ 
 ܁Γฦ͠ճ਺΋ಉ࣌ʹϑΝδϯάͰ 
 ૿Ճ͍ͤͯ͘͞ɽ େ͖Ίͷᮢ஋ͰϚονϯάΛߦ͍ɼ 
 ࣮ࡍʹ߈ܸՄೳ͔ݕূ͢Δɽ ͜ͷͱ͖ͷ܁Γฦ͠ճ਺͸ܭࢉྔ͕ 
 ࢦ਺తɼ ৐తɼ ৐తʜʜɼ৐తͱ 
 ஈʑԼ͍͖͛ͯɼᮢ஋Λӽ͑ͨ৔߹͸ 
 ͦͷܭࢉྔͩͱਪఆ͢Δɽ d d − 1
  26. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ʰ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻʱͷ੒Ռ w ޮ཰తͳ୳ࡧʹΑΓɼઌߦݚڀͰ͸ෆՄೳͩͬͨɼ 
 ࠷ѱܭࢉྔ͕ଟ߲ࣜతͳ৔߹ͷݕग़΋Մೳʹͳͬͨɽ w ͞Βʹɼ܁Γฦ͠ճ਺ͷύϥϝʔλΛ্ख͘ࢦఆ͢Δ͜ͱͰɼ

    
 ଟ߲ࣜతͳ৔߹ͷ࣍਺΋ਪఆͰ͖ΔΑ͏ʹͳͬͨɽ 
  27. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϑΝδϯάʹΑΔ3F%P4ݕग़ͷվળ<վળ఺> <վળ఺> w ੩తղੳʹΑΔҨ఻తΞϧΰϦζϜͷ࠷ॳͷੈ୅ͷܾఆ <վળ఺> w ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻΛ࢖ͬͨҨ఻తϓϩάϥϛϯάతΞϓϩʔν

    w Ҩ఻తϓϩάϥϛϯάతΞϓϩʔνΛԠ༻ͨ͠ܭࢉྔͷ࣍਺ͷਪఆ <վળ఺> w ద੾ͳϝϞԽઓུΛ༻͍ͨޮ཰తͳਖ਼نදݱϚονϯά࣮૷ʹΑΔ 
 ϑΝδϯάͷߴ଎Խ 
  28. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϝϞԽઓུ ఆཧ <%BWJT 41>  
 /'"ͷόοΫτϥοΩϯάʹΑΔϚονϯάͷࡍɼ෼ذͷ߹ྲྀ஍఺͔Βͷ

    
 ݁ՌΛϝϞԽ͢Δͱɼ͋Δঢ়ଶʹ͋ΔҐஔͰ౸ୡ͢Δճ਺͸ߴʑճͱͳΔɽ 
  29. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϝϞԽઓུͷద༻ ͜ͷϝϞԽઓུΛద༻͢Δ͜ͱͰɼϚονϯάʹ͔͔Δ࣌ؒ͸ଟ͘ͷ৔߹ 
 ೖྗจࣈྻͷ௕͞ʹઢܗʹൺྫ͢Δ͜ͱʹͳΔɽ ޙํࢀর͕͋Δ৔߹Ͱ΋ɼΩϟϓνϟதͷҐஔ΋ؚΊͯ 
 ϝϞԽ͢Δ͜ͱͰରԠͰ͖Δɽ

    ϑΝδϯάͷ࣮ߦ࣌ؒͷେ൒͸ਖ਼نදݱϚονϯάͷͨΊɼ ϝϞԽઓུΛద༻ͯ͠ϚονϯάΛߴ଎Խ͢Δ͜ͱ͸ඇৗʹॏཁͰ͋Δɽ 
  30. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ϝϞԽઓུͷ࣮૷ ͨͩ͠ɼਖ਼نදݱϚονϯά࣮૷͸7.ܕͳͷͰɼ࣍ͷΑ͏ʹ࣮૷ͨ͠ɽ w 7.ͷ໋ྩྻΛجຊϒϩοΫʹ෼ղ͠ɼ߹ྲྀ఺ͱͳΔ໋ྩΛಛఆ͢Δɽ w ߹ྲྀ఺ͱͳΔ໋ྩͷ௨աΛه࿥͠ɼͦͷઌͰى͖ͨόοΫτϥοΫ͕ 


    ه࿥ͨ͠߹ྲྀ఺ͱͳΔ໋ྩΑΓ΋લʹ໭Δ΋ͷͰ͋Ε͹ɼ 
 ͦͷ໋ྩͱҐஔͰϝϞԽ͢Δɽ 
  31. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ʰϝϞԽઓུʱͷ੒Ռ w ϑΝδϯάͷݕग़ʹ͔͔Δ͕࣌ؒେ෯ʹߴ଎Խ͞Εͨɽ w ͨͩ͠ɼޙํࢀর͕͋Δ৔߹ʹ͸Ή͠Ζ଎౓͕ 
 ஗͘ͳͬͯ͠·͏͜ͱͷํ͕ଟ͔ͬͨͨΊɼ

    
 ਖ਼نදݱ͕ޙํࢀরΛؚΉͱ͖͸ແޮʹ͢ΔΦϓγϣϯΛ௥Ճͯ͠ɼ 
 σϑΥϧτͱͨ͠ɽ 
  32. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ൃද಺༰  3F%P4ݕग़ϓϩάϥϜSFDIFDL 3F%P4੬ऑੑͱͦͷݕग़ํ๏ʹ͍ͭͯ؆୯ͷઆ໌ɾSFDIFDLͷ঺հ  ϑΝδϯάΛ༻͍ͨ3F%P4ݕग़ͷվળ ൃදऀͷओͳ3F%P4ݕग़ʹର͢ΔߩݙͰ͋ΔϑΝδϯάʹର͢Δվળ఺Λͭղઆ

     ࠓޙͷల๬ 
  33. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࠓޙͷల๬ <ల๬> w ࣮ݧɾݚڀͱ͍͏ΑΓ͸ɼ࣮ࡍʹ࢖͑ΔϓϩμΫτΛ໨ࢦͯ͠࡞͍ͬͯΔͷͰɼ 
 ϢʔβʔΛ૿΍ͯ͠ɼ3F%P4੬ऑੑ΁ͷରࡦ͕ਐΜͩੈքΛ໨ࢦ͍ͨ͠ɽ <ల๬>

    w ཧ࿦తͳ෼໺΁ͷߩݙͱͯ͠ɼޙํࢀরΛ࣋ͭਖ਼نදݱͷᐆດੑ BNCJHVJUZ 
 ͷܾఆੑʹؔ৺͕͋Δɽ <ల๬> w SFDIFDLͷϑΝδϯάͷεΩʔϜʹ͸Ұൠੑ͕͋ΔΑ͏ʹࢥ͏ͷͰɼ 
 ύϥϝʔλ੍ޚՄೳͳࣜΛҨ఻తϓϩάϥϛϯάͰੜ੒ɼখ͍͞ᮢ஋Ͱ୳ࡧ͠ɼେ͖͍ᮢ஋Ͱݕূ 
 ଞͷ੬ऑੑͷݕग़΍࠷దԽ໰୊ͳͲ΁Ԡ༻͍ͨ͠ɽ 
  34. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࠓޙͷల๬<ల๬> <ల๬> w ࣮ݧɾݚڀͱ͍͏ΑΓ͸ɼ࣮ࡍʹ࢖͑ΔϓϩμΫτΛ໨ࢦͯ͠࡞͍ͬͯΔͷͰɼ 
 ϢʔβʔΛ૿΍ͯ͠ɼ3F%P4੬ऑੑ΁ͷରࡦ͕ਐΜͩੈքΛ໨ࢦ͍ͨ͠ɽ <ల๬>

    w ཧ࿦తͳ෼໺΁ͷߩݙͱͯ͠ɼޙํࢀরΛ࣋ͭਖ਼نදݱͷᐆດੑ BNCJHVJUZ 
 ͷܾఆੑʹؔ৺͕͋Δɽ <ల๬> w SFDIFDLͷϑΝδϯάͷεΩʔϜʹ͸Ұൠੑ͕͋ΔΑ͏ʹࢥ͏ͷͰɼ 
 ύϥϝʔλ੍ޚՄೳͳࣜΛҨ఻తϓϩάϥϛϯάͰੜ੒ɼখ͍͞ᮢ஋Ͱ୳ࡧ͠ɼେ͖͍ᮢ஋Ͱݕূ 
 ଞͷ੬ऑੑͷݕग़΍࠷దԽ໰୊ͳͲ΁Ԡ༻͍ͨ͠ɽ 
  35. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ SFDIFDLΛ޿Ί͍ͨ w &4-JOUϓϥάΠϯͱͯ͠ར༻Ͱ͖ΔΑ͏ʹ͍ͯ͠Δ w ͦͦ͜͜େ͖ͳϓϩδΣΫτ LVCFBQQTLVCFBQQTˑ Ͱར༻

    w Ή͠Ζͦ͜Ͱ͔͠࢖ΘΕ͍ͯͳ͍͚ΕͲʝʝ w 74$PEF֦ு΋ϢʔβʔʹΑͬͯ࡞ΒΕͨ 3BOSFEPTDIFDLFSGPSWTDPEF  w ͋Γ͕ͱ͏͍͟͝·͢ w ͔͠͠ɼ·ͩ·ͩ޿·͍ͬͯΔͱ͸ݴ͍೉͍ঢ়گɽ 
  36. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ FTMJOUQMVHJOSFEPTͷ࢖͍ํ Πϯετʔϧ FTMJOUSDKTPOʹ࣍ͷ಺༰Λهड़  $ npm install

    -D eslint eslint-plugin-redos { "plugins": ["redos"], "rules": { "redos/no-vulnerable": "error" } }
  37. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ FTMJOUQMVHJOSFEPTͷ࢖͍ํ 

  38. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ SFDIFDLΛ޿ΊΔʹ͸ʝʝʁ w 3F%P4ͱ͍͏੬ऑੑࣗମͷ஌໊౓͕ͦ͜·ͰͰ͸ͳ͍ͷͰɼ 
 ϒϩάهࣄ΍ൃදͳͲΛ௨ͯ͡ܒ໤͍ͯ͘͠ඞཁ͕͋Δʁ w ݱࡏ͸+BWB4DSJQUʹ͔͠ରԠ͍ͯ͠ͳ͍͕ɼଞͷݴޠʹ΋ରԠ͢Δɽ

    w 1ZUIPO +BWB 1$3& 1)1 3VCZ͋ͨΓʝʝʁ w खܰʹར༻Ͱ͖Δ؀ڥΛ੔උ͢Δɽ w (JU)VC"DUJPOTͰɼ਺ߦͷઃఆͰಈ࡞͢ΔΑ͏ʹ͍ͨ͠ɽ w ੬ऑͰ͸ͳ͍ਖ਼نදݱΛఏҊ͢Δػೳ ਖ਼نදݱͷम෮ 
  39. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ 3F%P4͸޿·ͬͯͳ͍ʁ  IUUQTRJJUBDPN5BUBNPJUFNTBDF IUUQXXXSDDSJUTVNFJBDKQ@ IUUQTLB[FCVSPIBUFOBCMPHDPNFOUSZ ೥݄தʹ3F%P4ʹؔ͢Δ 


    ϒϩάهࣄ͕ຊ΋ɽ
  40. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࠓޙͷల๬<ల๬> <ల๬> w ࣮ݧɾݚڀͱ͍͏ΑΓ͸ɼ࣮ࡍʹ࢖͑ΔϓϩμΫτΛ໨ࢦͯ͠࡞͍ͬͯΔͷͰɼ 
 ϢʔβʔΛ૿΍ͯ͠ɼ3F%P4੬ऑੑ΁ͷରࡦ͕ਐΜͩੈքΛ໨ࢦ͍ͨ͠ɽ <ల๬>

    w ཧ࿦తͳ෼໺΁ͷߩݙͱͯ͠ɼޙํࢀরΛ࣋ͭਖ਼نදݱͷᐆດੑ BNCJHVJUZ 
 ͷܾఆੑʹؔ৺͕͋Δɽ <ల๬> w SFDIFDLͷϑΝδϯάͷεΩʔϜʹ͸Ұൠੑ͕͋ΔΑ͏ʹࢥ͏ͷͰɼ 
 ύϥϝʔλ੍ޚՄೳͳࣜΛҨ఻తϓϩάϥϛϯάͰੜ੒ɼখ͍͞ᮢ஋Ͱ୳ࡧ͠ɼେ͖͍ᮢ஋Ͱݕূ 
 ଞͷ੬ऑੑͷݕग़΍࠷దԽ໰୊ͳͲ΁Ԡ༻͍ͨ͠ɽ 
  41. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ޙํࢀরΛ࣋ͭਖ਼نදݱ ޙํࢀরΛ࣋ͭਖ਼نදݱ FYUFOEFESFHVMBSFYQSFTTJPO SFHFY ͸ 
 ༷ʑͳܾఆ໰୊ʹ͍ܾͭͯఆෆೳͰ͋Δ͜ͱ͕஌ΒΕ͍ͯΔ<'SFZEFOCFSHFS

    50$4>ɽ ීวੑ VOJWFSTBMJUZ ɾਖ਼نੑ SFHVMBSJUZ ɾแؚ JODMVTJPO ɾ౳Ձੑ FRVJWBMFODF  ͕ͩɼ3F%P4ͱؔ܎ͷͭΑ͍ᐆດੑ BNCJHVJUZ ͷܾఆՄೳੑʹ͍ͭͯ͸ 
 ൃදऀͷ஌ΔݶΓະղܾͰ͋Δ ᐆດੑಉ͡จࣈྻʹର͢Δಋग़໦͕ෳ਺ଘࡏ͢Δ ɽ ޙํࢀরʹՃ͑ͯઌಡΈΛ࣋ͭ৔߹ͳΒܾఆෆೳͱূ໌Ͱ͖ͦ͏͕ͩɼ 
 ઌಡΈ͕ແ͍৔߹͸Ͳ͏ͩΖ͏͔ʁ 
  42. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࠓޙͷల๬<ల๬> <ల๬> w ࣮ݧɾݚڀͱ͍͏ΑΓ͸ɼ࣮ࡍʹ࢖͑ΔϓϩμΫτΛ໨ࢦͯ͠࡞͍ͬͯΔͷͰɼ 
 ϢʔβʔΛ૿΍ͯ͠ɼ3F%P4੬ऑੑ΁ͷରࡦ͕ਐΜͩੈքΛ໨ࢦ͍ͨ͠ɽ <ల๬>

    w ཧ࿦తͳ෼໺΁ͷߩݙͱͯ͠ɼޙํࢀরΛ࣋ͭਖ਼نදݱͷᐆດੑ BNCJHVJUZ 
 ͷܾఆੑʹؔ৺͕͋Δɽ <ల๬> w SFDIFDLͷϑΝδϯάͷεΩʔϜʹ͸Ұൠੑ͕͋ΔΑ͏ʹࢥ͏ͷͰɼ 
 ύϥϝʔλ੍ޚՄೳͳࣜΛҨ఻తϓϩάϥϛϯάͰੜ੒ɼখ͍͞ᮢ஋Ͱ୳ࡧ͠ɼେ͖͍ᮢ஋Ͱݕূ 
 ଞͷ੬ऑੑͷݕग़΍࠷దԽ໰୊ͳͲ΁Ԡ༻͍ͨ͠ɽ 
  43. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ·ͱΊ w 3F%P4͸ਖ਼نදݱͷ੬ऑੑɽ w 3F%P4ݕग़ʹ͸େ͖͘෼͚ͯɼΦʔτϚτϯཧ࿦ʹجͮ͘ख๏ͱɼ 
 ϑΝδϯάͷΑ͏ͳಈతղੳͷ௨Γͷํ๏͕͋Δɽ

    w ϑΝδϯάʹରͯ͠ɼ࠷ॳͷੈ୅ͷ੩తղੳʹΑΔܾఆ΍ 
 ܁Γฦ͠ߏ଄Λ࣋ͭจࣈྻͷ࠾༻ɼϝϞԽʹΑΔߴ଎Խͱ͍͏վળΛͨ͠ɽ w SFDIFDLΛ࢖ͬͯ΋Β͑Δͱخ͍͠Ͱ͢ɽ 
  44. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࢀߟจݙϦετ w <%BWJT 41> 
 %"7*4 +BNFT$4&37"/5

    'SBODJTDP-&& %POHZPPO6TJOHTFMFDUJWF NFNPJ[BUJPOUPEFGFBUSFHVMBSFYQSFTTJPOEFOJBMPGTFSWJDF 3F%P4  *O*&&&4ZNQPTJVNPO4FDVSJUZBOE1SJWBDZ 41 -PT"MBNJUPT $"  64"Q w <'SFZEFOCFSHFS 50$4> 
 '3&:%&/#&3(&3 %PNJOJL%&YUFOEFESFHVMBSFYQSFTTJPOT4VDDJODUOFTT BOEEFDJEBCJMJUZ5IFPSZPG$PNQVUJOH4ZTUFNT   
  45. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࢀߟจݙϦετ w <-J 64&/*94FDVSJUZ> 
 -* :FUJOH

    FUBM3F%P4)VOUFS"$PNCJOFE4UBUJDBOE%ZOBNJD"QQSPBDI GPS3FHVMBS&YQSFTTJPO\%P4^%FUFDUJPO*OUI64&/*94FDVSJUZ 4ZNQPTJVN 64&/*94FDVSJUZ Q w <4IFO "4&> 
 4)&/ :VKV FUBM3F4DVFDSBGUJOHSFHVMBSFYQSFTTJPO%P4BUUBDLT*O SE*&&&"$.*OUFSOBUJPOBM$POGFSFODFPO"VUPNBUFE4PGUXBSF &OHJOFFSJOH "4& *&&& Q 
  46. ୈճϓϩάϥϛϯάɾγϯϙδ΢Ϝ೥݄೔ ౔ ʮ3F%P4ݕग़ϓϩάϥϜSFDIFDLͷ։ൃʯ೔ຊେֶจཧֶ෦৘ใՊֶՊ೥౻࿘େ໻ ࢀߟจݙϦετ w <8FJEFNBO 1I%5IFTJT> 
 8&*%&."/ /JDPMBBT)FOESJL4UBUJDBOBMZTJTPGSFHVMBSFYQSFTTJPOT

    1I%5IFTJT4UFMMFOCPTDI4UFMMFOCPTDI6OJWFSTJUZ w <8ÛTUIPM[ 5"$"4> 
 8¾45)0-; 7BMFOUJO FUBM4UBUJDEFUFDUJPOPG%P4WVMOFSBCJMJUJFTJO QSPHSBNTUIBUVTFSFHVMBSFYQSFTTJPOT*O*OUFSOBUJPOBM$POGFSFODFPO 5PPMTBOE"MHPSJUINTGPSUIF$POTUSVDUJPOBOE"OBMZTJTPG4ZTUFNT 4QSJOHFS #FSMJO )FJEFMCFSH Q