package Ġorg . elixir _ lang . github . issues . create Ċ Ċ import Ġcom . intellij . diagnostic . Abstract Message Ċ import Ġcom . intellij . ide . plugins . PluginManager Core Ċ import Ġcom . intellij . openapi . application . Application Names Info Ċ import Ġcom . intellij . openapi . application . ex . Application Info Ex Ċ import Ġcom . intellij . openapi . diagnostic . Attachment Ċ import Ġcom . intellij . openapi . diagnostic . Ide a Logging Event Ċ import Ġcom . intellij . openapi . extensions . Plugin Id Ċ import Ġcom . intellij . util . Exception Util Ċ Ċ class ĠRequest Ġprivate Ġconstructor ( val Ġtitle : ĠString , Ġval Ġbody : ĠString ) Ġ{ ĊĠĠĠ Ġconstructor ( additional Info : ĠString ?, Ġevents : ĠArray < Ide a Logging Event >) Ġ: Ġthis ( title ( additional Info , Ġevents ), Ġbody ( additional Info , Ġevents )) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtitle ( additional Info : ĠString ?, Ġevents : ĠArray < Ide a Logging Event >): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Info ?. line Sequence ()?. first () Ġ?: Ġtitle ( events ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtitle ( events : ĠArray < Ide a Logging Event >): ĠString Ġ= Ġtitle ( events . first ()) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtitle ( event : ĠIde a Logging Event ): ĠString Ġ= Ġtitle ( event . throwable ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtitle ( throwable : ĠThrowable ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠException Util . get Throwable Text ( throwable ). line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġlines ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take While Ġ{ Ġ! it . startsWith ("\ tat Ġ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Prefix (" java . lang . Throwable : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . startsWith ("\ tat Ġ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . startsWith ("\ tat Ġorg . elixir _ lang . error report . Logger ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . startsWith ("\ tat Ġcom . intellij . openapi . diagnostic . Logger ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Prefix ("\ t ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ message Ġ$ location " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbody ( additional Info : ĠString ?, Ġevents : ĠArray < Ide a Logging Event >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsystem ( string Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadditional Info ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġadditional Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsystem ( string Builder : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġ 1 , Ġ" System ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Version ( string Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication ( string Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperating System ( string Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ('\ n ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġplugin Version ( string Builder : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" Plugin ĠVersion : Ġ"). append ( PluginManager Core . get Plugin ( Plugin Id . getId (" org . elixir _ lang ")) !!. version ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġapplication ( string Builder : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append (" Application : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( Application Names Info . getInstance (). full ProductName With Edition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" Ġ( "). append ( Application Info Ex . getInstance (). full Version ). append (" )\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġoperating System ( string Builder : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append (" Operating ĠSystem : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( System . getProperty (" os . name ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" Ġ( "). append ( System . getProperty (" os . version ")) Ġ. append (" )\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġadditional Info ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġadditional Info : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( additional Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Section ( string Builder , Ġlevel , Ġ" What ĠI Ġwas Ġdoing ", Ġadditional Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġevents ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġevents : ĠArray < Ide a Logging Event >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( events . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġevents . single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġ" Event ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevent . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattachments ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents . forEach Indexed Ġ{ Ġindex , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġ" Event Ġ$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevent . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattachments ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġevent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġexception ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġevent : ĠIde a Logging Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . throwable ?. let Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexception ( string Builder , Ġlevel , Ġthrowable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġexception ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġ" Exception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġthrowable . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack trace ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġthrowable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġattachments ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġevent : ĠIde a Logging Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . data ?. let Ġ{ Ġit Ġas ? ĠAbstract Message Ġ} ?. included Attachments . take Unless Ġ{ Ġit . isNull OrEmpty () Ġ} ?. let Ġ{ Ġattachments Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattachments ( string Builder , Ġlevel , Ġattachments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġattachments ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġattachment List : ĠList < Attachment >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġ" Attachments ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( attachment Ġin Ġattachment List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattachment ( string Builder , Ġlevel Ġ+ Ġ 1 , Ġattachment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġattachment ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġattachment : ĠAttachment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġ"` " Ġ+ Ġattachment . path Ġ+ Ġ"` ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġcopy Ġthe Ġcontents Ġof Ġthe Ġabove Ġpath Ġinto Ġthis Ġreport : Ġfiles Ġare Ġtoo Ġlong Ġto Ġinclude Ġin Ġthe Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" URL Ġwhen Ġopening Ġthe Ġbrowser . Ġ ĠYou Ġcan Ġget Ġthe Ġexact Ġcontents Ġof Ġthat Ġpath Ġwhen Ġthe Ġerror Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" occ urred Ġfrom Ġthe ĠAttach ments Ġtab Ġof Ġthe ĠIDE ĠF atal ĠErrors Ġdialog Ġthat Ġyou Ġhad Ġopen Ġbefore Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click ing Ġthe Ġbutton Ġto Ġsubmit Ġthis Ġissue ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcode Block ( string Builder : ĠStringBuilder , Ġcode : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Fence ( string Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Fence ( string Builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcode Fence ( string Builder : ĠStringBuilder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append (" ``` \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġheader ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlevel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ('# ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmessage ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Section ( string Builder , Ġlevel , Ġ" Message ", Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġstack trace ( string Builder : ĠStringBuilder , Ġlevel : ĠInt , Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġ" Stack trace ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Fence ( string Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠException Util . get Throwable Text ( throwable ). line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Plugin Line Ġ= Ġlines . indexOf Last Ġ{ Ġit . contains (" at Ġorg . elixir _ lang .") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Lines Ġ= Ġif Ġ( last Plugin Line Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines . take ( last Plugin Line Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Lines . forEach Ġ{ ĠstringBuilder . append ( it ). append ('\ n ') Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Fence ( string Builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtext Section ( string Builder : ĠStringBuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Ġ!= Ġnull Ġ&& Ġtext . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( string Builder , Ġlevel , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ("\ n \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ