/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 - 2 0 2 0 ĠRe ece ĠH . ĠD un n Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġuk . co . re ec ed un n . intellij . plugin . base x . query . session Ċ Ċ import Ġuk . co . re ec ed un n . intellij . plugin . xd m . types . impl . values . Xs Duration Ċ Ċ @ Suppress (" RegExp Anonymous Group ") Ċ private Ġval ĠRE _ TOTAL _ TIME Ġ= Ġ" ([ 0 - 9 . ]+) Ġms [ Ġ. ] ". to Regex () Ċ Ċ private Ġfun ĠString . to Base X Info Blocks (): ĠSequence < String > Ġ{ ĊĠĠĠ Ġreturn Ġreplace ("\ r \ n ", Ġ"\ n "). replace ('\ r ', Ġ'\ n '). split ("\ n \ n "). as Sequence (). map Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . startsWith ('\ n ') Ġ-> Ġit . substring ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . endsWith ('\ n ') Ġ-> Ġit . substring ( 0 , Ġit . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠString . parse Base X Info Block ( info : ĠHashMap < String , ĠAny >) Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġvar Ġprofile Ġ= Ġinfo [" Profile "] Ġas ? ĠHashMap < String , ĠX s Duration > ĊĠĠĠ Ġsplit ('\ n '). forEach Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġrow . split (": Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( data [ 1 ]. endsWith (" Ġms ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( profile Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [" Profile "] Ġ= Ġprofile !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile ?. put ( data [ 0 ], ĠX s Duration . ms ( data [ 1 ]. substring Before (" Ġms "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ 0 ] Ġ== Ġ" Total ĠTime ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [ data [ 0 ]] Ġ= ĠX s Duration . ms ( data [ 1 ]. substring Before (" Ġms ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [ data [ 0 ]] Ġ= Ġdata [ 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . to Base X Info (): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠ Ġval Ġinfo Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠ Ġto Base X Info Blocks (). forEach Ġ{ Ġblock Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġpart Ġ= Ġblock . substring Before ('\ n ') ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpart . contains (": Ġ") Ġ-> Ġblock . parse Base X Info Block ( info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpart Ġ== Ġ" Query ĠPlan :" Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [" Query ĠPlan "] Ġ= Ġblock . substring After ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpart Ġ== Ġ" Comp iling :" Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [" Compilation "] Ġ= Ġblock . substring After ('\ n '). split ('\ n '). map Ġ{ Ġit . substring ( 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpart Ġ== Ġ" Optim ized ĠQuery :" Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [" Optim ized ĠQuery "] Ġ= Ġblock . substring After ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠRE _ TOTAL _ TIME . find ( block )?. let Ġ{ Ġtotal Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo [" Total ĠTime "] Ġ= ĠX s Duration . ms ( total . group Values [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġinfo Ċ } Ċ