<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1791791847">
  <project timestamp="1791791847">
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiCrossWiki.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiCrossWiki" namespace="global">
        <metrics complexity="13" methods="8" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="14" elements="51" coveredelements="16"/>
      </class>
      <line num="33" type="method" name="getFromForeign" visibility="protected" complexity="3" crap="6.80" count="3"/>
      <line num="34" type="stmt" count="3"/>
      <line num="35" type="stmt" count="3"/>
      <line num="36" type="stmt" count="3"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="55" type="method" name="getForeignQueryParams" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="62" type="method" name="allowCrossWikiNotifications" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="64" type="stmt" count="5"/>
      <line num="74" type="method" name="getRequestedWikis" visibility="protected" complexity="3" crap="3.58" count="5"/>
      <line num="75" type="stmt" count="5"/>
      <line num="79" type="stmt" count="5"/>
      <line num="81" type="stmt" count="5"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="89" type="stmt" count="5"/>
      <line num="91" type="stmt" count="5"/>
      <line num="94" type="stmt" count="5"/>
      <line num="100" type="method" name="getRequestedForeignWikis" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="101" type="stmt" count="5"/>
      <line num="104" type="method" name="getForeignNotifications" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="112" type="method" name="getForeignWikisWithUnreadNotifications" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="119" type="method" name="getCrossWikiParams" visibility="public" complexity="2" crap="4.05" count="5"/>
      <line num="122" type="stmt" count="5"/>
      <line num="124" type="stmt" count="5"/>
      <line num="125" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="142" type="stmt" count="5"/>
      <metrics loc="145" ncloc="95" classes="1" methods="8" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="14" elements="51" coveredelements="16"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoArticleReminder.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoArticleReminder" namespace="global">
        <metrics complexity="10" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="57" coveredstatements="0" elements="64" coveredelements="0"/>
      </class>
      <line num="14" type="method" name="execute" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="64" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="86" type="method" name="needsToken" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="91" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="96" type="method" name="isWriteMode" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="104" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="119" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <metrics loc="123" ncloc="99" classes="1" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="57" coveredstatements="0" elements="64" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoCreateEvent.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoCreateEvent" namespace="global">
        <metrics complexity="14" methods="8" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="59" elements="74" coveredelements="64"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="24" type="stmt" count="4"/>
      <line num="31" type="method" name="execute" visibility="public" complexity="7" crap="7.06" count="4"/>
      <line num="32" type="stmt" count="4"/>
      <line num="33" type="stmt" count="0"/>
      <line num="37" type="stmt" count="4"/>
      <line num="38" type="stmt" count="4"/>
      <line num="39" type="stmt" count="0"/>
      <line num="42" type="stmt" count="4"/>
      <line num="46" type="stmt" count="4"/>
      <line num="48" type="stmt" count="4"/>
      <line num="49" type="stmt" count="2"/>
      <line num="52" type="stmt" count="3"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="stmt" count="3"/>
      <line num="58" type="stmt" count="3"/>
      <line num="59" type="stmt" count="3"/>
      <line num="60" type="stmt" count="3"/>
      <line num="61" type="stmt" count="3"/>
      <line num="62" type="stmt" count="3"/>
      <line num="63" type="stmt" count="3"/>
      <line num="65" type="stmt" count="3"/>
      <line num="66" type="stmt" count="3"/>
      <line num="67" type="stmt" count="3"/>
      <line num="70" type="stmt" count="3"/>
      <line num="71" type="stmt" count="3"/>
      <line num="72" type="stmt" count="3"/>
      <line num="73" type="stmt" count="3"/>
      <line num="74" type="stmt" count="3"/>
      <line num="75" type="stmt" count="3"/>
      <line num="76" type="stmt" count="3"/>
      <line num="83" type="method" name="mustBePosted" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="84" type="stmt" count="4"/>
      <line num="88" type="method" name="isWriteMode" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="89" type="stmt" count="4"/>
      <line num="93" type="method" name="needsToken" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="94" type="stmt" count="4"/>
      <line num="101" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="102" type="stmt" count="4"/>
      <line num="103" type="stmt" count="4"/>
      <line num="104" type="stmt" count="4"/>
      <line num="105" type="stmt" count="4"/>
      <line num="106" type="stmt" count="4"/>
      <line num="107" type="stmt" count="4"/>
      <line num="108" type="stmt" count="4"/>
      <line num="109" type="stmt" count="4"/>
      <line num="110" type="stmt" count="4"/>
      <line num="111" type="stmt" count="4"/>
      <line num="112" type="stmt" count="4"/>
      <line num="113" type="stmt" count="4"/>
      <line num="114" type="stmt" count="4"/>
      <line num="115" type="stmt" count="4"/>
      <line num="116" type="stmt" count="4"/>
      <line num="117" type="stmt" count="4"/>
      <line num="118" type="stmt" count="4"/>
      <line num="119" type="stmt" count="4"/>
      <line num="120" type="stmt" count="4"/>
      <line num="121" type="stmt" count="4"/>
      <line num="122" type="stmt" count="4"/>
      <line num="123" type="stmt" count="4"/>
      <line num="124" type="stmt" count="4"/>
      <line num="125" type="stmt" count="4"/>
      <line num="126" type="stmt" count="4"/>
      <line num="127" type="stmt" count="4"/>
      <line num="128" type="stmt" count="4"/>
      <line num="129" type="stmt" count="4"/>
      <line num="130" type="stmt" count="4"/>
      <line num="131" type="stmt" count="4"/>
      <line num="138" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="148" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <metrics loc="152" ncloc="124" classes="1" methods="8" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="59" elements="74" coveredelements="64"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoMarkRead.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoMarkRead" namespace="global">
        <metrics complexity="17" methods="7" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="63" coveredstatements="45" elements="70" coveredelements="49"/>
      </class>
      <line num="16" type="method" name="execute" visibility="public" complexity="11" crap="13.69" count="3"/>
      <line num="17" type="stmt" count="3"/>
      <line num="20" type="stmt" count="3"/>
      <line num="22" type="stmt" count="3"/>
      <line num="24" type="stmt" count="3"/>
      <line num="27" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="43" type="stmt" count="3"/>
      <line num="45" type="stmt" count="0"/>
      <line num="49" type="stmt" count="3"/>
      <line num="51" type="stmt" count="3"/>
      <line num="52" type="stmt" count="3"/>
      <line num="53" type="stmt" count="3"/>
      <line num="55" type="stmt" count="3"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="61" type="stmt" count="3"/>
      <line num="62" type="stmt" count="3"/>
      <line num="63" type="stmt" count="3"/>
      <line num="64" type="stmt" count="3"/>
      <line num="65" type="stmt" count="3"/>
      <line num="66" type="stmt" count="3"/>
      <line num="69" type="stmt" count="3"/>
      <line num="70" type="stmt" count="3"/>
      <line num="71" type="stmt" count="3"/>
      <line num="72" type="stmt" count="3"/>
      <line num="74" type="stmt" count="3"/>
      <line num="78" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="79" type="stmt" count="3"/>
      <line num="80" type="stmt" count="3"/>
      <line num="81" type="stmt" count="3"/>
      <line num="82" type="stmt" count="3"/>
      <line num="83" type="stmt" count="3"/>
      <line num="84" type="stmt" count="3"/>
      <line num="85" type="stmt" count="3"/>
      <line num="86" type="stmt" count="3"/>
      <line num="87" type="stmt" count="3"/>
      <line num="88" type="stmt" count="3"/>
      <line num="89" type="stmt" count="3"/>
      <line num="90" type="stmt" count="3"/>
      <line num="91" type="stmt" count="3"/>
      <line num="92" type="stmt" count="3"/>
      <line num="93" type="stmt" count="3"/>
      <line num="94" type="stmt" count="3"/>
      <line num="95" type="stmt" count="3"/>
      <line num="96" type="stmt" count="3"/>
      <line num="97" type="stmt" count="3"/>
      <line num="101" type="method" name="needsToken" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="102" type="stmt" count="3"/>
      <line num="106" type="method" name="mustBePosted" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="107" type="stmt" count="3"/>
      <line num="111" type="method" name="isWriteMode" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="112" type="stmt" count="3"/>
      <line num="119" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="131" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <metrics loc="135" ncloc="118" classes="1" methods="7" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="63" coveredstatements="45" elements="70" coveredelements="49"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoMarkSeen.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoMarkSeen" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="35" coveredelements="0"/>
      </class>
      <line num="14" type="method" name="execute" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="44" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="62" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="69" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <metrics loc="73" ncloc="62" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="35" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoMute.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoMute" namespace="global">
        <metrics complexity="23" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="64" coveredstatements="0" elements="73" coveredelements="0"/>
      </class>
      <line num="26" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="36" type="method" name="execute" visibility="public" complexity="9" crap="90" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="89" type="method" name="lookupIds" visibility="private" complexity="7" crap="56" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="110" type="method" name="parsePref" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="114" type="method" name="serializePref" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="119" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="135" type="method" name="needsToken" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="140" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="145" type="method" name="isWriteMode" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <metrics loc="150" ncloc="140" classes="1" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="64" coveredstatements="0" elements="73" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoNotifications.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoNotifications" namespace="global">
        <metrics complexity="90" methods="15" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="320" coveredstatements="185" elements="335" coveredelements="187"/>
      </class>
      <line num="38" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="49" type="method" name="execute" visibility="public" complexity="12" crap="17.33" count="2"/>
      <line num="50" type="stmt" count="2"/>
      <line num="53" type="stmt" count="2"/>
      <line num="55" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="66" type="stmt" count="2"/>
      <line num="67" type="stmt" count="0"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="72" type="stmt" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="85" type="stmt" count="2"/>
      <line num="86" type="stmt" count="2"/>
      <line num="87" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="89" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="97" type="stmt" count="2"/>
      <line num="104" type="method" name="getLocalNotifications" visibility="protected" complexity="13" crap="17.76" count="2"/>
      <line num="105" type="stmt" count="2"/>
      <line num="106" type="stmt" count="2"/>
      <line num="107" type="stmt" count="2"/>
      <line num="108" type="stmt" count="2"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="115" type="stmt" count="2"/>
      <line num="116" type="stmt" count="2"/>
      <line num="118" type="stmt" count="2"/>
      <line num="119" type="stmt" count="1"/>
      <line num="120" type="stmt" count="1"/>
      <line num="121" type="stmt" count="1"/>
      <line num="122" type="stmt" count="1"/>
      <line num="123" type="stmt" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="125" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="136" type="stmt" count="1"/>
      <line num="137" type="stmt" count="1"/>
      <line num="138" type="stmt" count="1"/>
      <line num="139" type="stmt" count="1"/>
      <line num="140" type="stmt" count="1"/>
      <line num="141" type="stmt" count="1"/>
      <line num="142" type="stmt" count="1"/>
      <line num="146" type="stmt" count="1"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="1"/>
      <line num="149" type="stmt" count="1"/>
      <line num="150" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="158" type="stmt" count="2"/>
      <line num="159" type="stmt" count="2"/>
      <line num="160" type="stmt" count="2"/>
      <line num="161" type="stmt" count="2"/>
      <line num="162" type="stmt" count="2"/>
      <line num="165" type="stmt" count="2"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="172" type="stmt" count="2"/>
      <line num="189" type="method" name="getSectionPropList" visibility="protected" complexity="2" crap="2.26" count="1"/>
      <line num="201" type="stmt" count="1"/>
      <line num="203" type="stmt" count="1"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="209" type="stmt" count="1"/>
      <line num="210" type="stmt" count="1"/>
      <line num="211" type="stmt" count="1"/>
      <line num="214" type="stmt" count="1"/>
      <line num="232" type="method" name="getPropList" visibility="protected" complexity="18" crap="133.15" count="2"/>
      <line num="243" type="stmt" count="2"/>
      <line num="244" type="stmt" count="2"/>
      <line num="245" type="stmt" count="2"/>
      <line num="246" type="stmt" count="2"/>
      <line num="248" type="stmt" count="2"/>
      <line num="251" type="stmt" count="2"/>
      <line num="253" type="stmt" count="2"/>
      <line num="255" type="stmt" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="274" type="stmt" count="0"/>
      <line num="275" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="284" type="stmt" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="295" type="stmt" count="0"/>
      <line num="296" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="299" type="stmt" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="305" type="stmt" count="2"/>
      <line num="307" type="stmt" count="0"/>
      <line num="308" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="316" type="stmt" count="2"/>
      <line num="318" type="stmt" count="2"/>
      <line num="319" type="stmt" count="2"/>
      <line num="320" type="stmt" count="0"/>
      <line num="321" type="stmt" count="0"/>
      <line num="324" type="stmt" count="2"/>
      <line num="326" type="stmt" count="0"/>
      <line num="327" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="329" type="stmt" count="0"/>
      <line num="330" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="332" type="stmt" count="0"/>
      <line num="335" type="stmt" count="0"/>
      <line num="341" type="stmt" count="2"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="348" type="stmt" count="2"/>
      <line num="358" type="method" name="getPropCount" visibility="protected" complexity="4" crap="4" count="2"/>
      <line num="359" type="stmt" count="2"/>
      <line num="360" type="stmt" count="2"/>
      <line num="361" type="stmt" count="2"/>
      <line num="363" type="stmt" count="2"/>
      <line num="364" type="stmt" count="2"/>
      <line num="365" type="stmt" count="2"/>
      <line num="366" type="stmt" count="2"/>
      <line num="367" type="stmt" count="1"/>
      <line num="368" type="stmt" count="1"/>
      <line num="370" type="stmt" count="2"/>
      <line num="372" type="stmt" count="2"/>
      <line num="373" type="stmt" count="2"/>
      <line num="375" type="stmt" count="2"/>
      <line num="385" type="method" name="getPropSeenTime" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="387" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="390" type="stmt" count="0"/>
      <line num="391" type="stmt" count="0"/>
      <line num="394" type="stmt" count="0"/>
      <line num="395" type="stmt" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="400" type="stmt" count="0"/>
      <line num="410" type="method" name="makeForeignNotification" visibility="protected" complexity="10" crap="110" count="0"/>
      <line num="415" type="stmt" count="0"/>
      <line num="416" type="stmt" count="0"/>
      <line num="417" type="stmt" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="420" type="stmt" count="0"/>
      <line num="423" type="stmt" count="0"/>
      <line num="424" type="stmt" count="0"/>
      <line num="428" type="stmt" count="0"/>
      <line num="429" type="stmt" count="0"/>
      <line num="430" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="433" type="stmt" count="0"/>
      <line num="434" type="stmt" count="0"/>
      <line num="435" type="stmt" count="0"/>
      <line num="436" type="stmt" count="0"/>
      <line num="437" type="stmt" count="0"/>
      <line num="438" type="stmt" count="0"/>
      <line num="439" type="stmt" count="0"/>
      <line num="440" type="stmt" count="0"/>
      <line num="441" type="stmt" count="0"/>
      <line num="442" type="stmt" count="0"/>
      <line num="443" type="stmt" count="0"/>
      <line num="444" type="stmt" count="0"/>
      <line num="446" type="stmt" count="0"/>
      <line num="447" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="449" type="stmt" count="0"/>
      <line num="450" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="457" type="stmt" count="0"/>
      <line num="458" type="stmt" count="0"/>
      <line num="459" type="stmt" count="0"/>
      <line num="461" type="stmt" count="0"/>
      <line num="462" type="stmt" count="0"/>
      <line num="464" type="stmt" count="0"/>
      <line num="467" type="method" name="getForeignQueryParams" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="468" type="stmt" count="0"/>
      <line num="471" type="stmt" count="0"/>
      <line num="473" type="stmt" count="0"/>
      <line num="481" type="method" name="mergeResults" visibility="protected" complexity="5" crap="5.05" count="2"/>
      <line num="482" type="stmt" count="2"/>
      <line num="483" type="stmt" count="2"/>
      <line num="484" type="stmt" count="0"/>
      <line num="487" type="stmt" count="2"/>
      <line num="488" type="stmt" count="2"/>
      <line num="491" type="stmt" count="2"/>
      <line num="495" type="stmt" count="2"/>
      <line num="498" type="stmt" count="2"/>
      <line num="507" type="method" name="mergeList" visibility="protected" complexity="8" crap="9.95" count="2"/>
      <line num="509" type="stmt" count="2"/>
      <line num="510" type="stmt" count="0"/>
      <line num="511" type="stmt" count="2"/>
      <line num="513" type="stmt" count="2"/>
      <line num="514" type="stmt" count="1"/>
      <line num="515" type="stmt" count="1"/>
      <line num="516" type="stmt" count="0"/>
      <line num="518" type="stmt" count="1"/>
      <line num="519" type="stmt" count="0"/>
      <line num="521" type="stmt" count="1"/>
      <line num="524" type="stmt" count="1"/>
      <line num="525" type="stmt" count="0"/>
      <line num="527" type="stmt" count="1"/>
      <line num="528" type="stmt" count="0"/>
      <line num="530" type="stmt" count="1"/>
      <line num="533" type="stmt" count="2"/>
      <line num="542" type="method" name="mergeCount" visibility="protected" complexity="7" crap="8.14" count="2"/>
      <line num="543" type="stmt" count="2"/>
      <line num="544" type="stmt" count="1"/>
      <line num="545" type="stmt" count="1"/>
      <line num="546" type="stmt" count="0"/>
      <line num="548" type="stmt" count="1"/>
      <line num="549" type="stmt" count="0"/>
      <line num="551" type="stmt" count="1"/>
      <line num="552" type="stmt" count="1"/>
      <line num="556" type="stmt" count="2"/>
      <line num="557" type="stmt" count="0"/>
      <line num="559" type="stmt" count="2"/>
      <line num="561" type="stmt" count="0"/>
      <line num="563" type="stmt" count="2"/>
      <line num="565" type="stmt" count="2"/>
      <line num="569" type="method" name="getAllowedParams" visibility="public" complexity="3" crap="3.00" count="2"/>
      <line num="570" type="stmt" count="2"/>
      <line num="572" type="stmt" count="2"/>
      <line num="573" type="stmt" count="2"/>
      <line num="574" type="stmt" count="2"/>
      <line num="575" type="stmt" count="2"/>
      <line num="576" type="stmt" count="2"/>
      <line num="577" type="stmt" count="2"/>
      <line num="578" type="stmt" count="2"/>
      <line num="579" type="stmt" count="2"/>
      <line num="580" type="stmt" count="2"/>
      <line num="581" type="stmt" count="2"/>
      <line num="582" type="stmt" count="2"/>
      <line num="583" type="stmt" count="2"/>
      <line num="584" type="stmt" count="2"/>
      <line num="585" type="stmt" count="2"/>
      <line num="586" type="stmt" count="2"/>
      <line num="587" type="stmt" count="2"/>
      <line num="588" type="stmt" count="2"/>
      <line num="589" type="stmt" count="2"/>
      <line num="590" type="stmt" count="2"/>
      <line num="591" type="stmt" count="2"/>
      <line num="592" type="stmt" count="2"/>
      <line num="593" type="stmt" count="2"/>
      <line num="594" type="stmt" count="2"/>
      <line num="595" type="stmt" count="2"/>
      <line num="596" type="stmt" count="2"/>
      <line num="597" type="stmt" count="2"/>
      <line num="598" type="stmt" count="2"/>
      <line num="599" type="stmt" count="2"/>
      <line num="600" type="stmt" count="2"/>
      <line num="601" type="stmt" count="2"/>
      <line num="602" type="stmt" count="2"/>
      <line num="604" type="stmt" count="2"/>
      <line num="606" type="stmt" count="2"/>
      <line num="607" type="stmt" count="2"/>
      <line num="608" type="stmt" count="2"/>
      <line num="609" type="stmt" count="2"/>
      <line num="610" type="stmt" count="2"/>
      <line num="611" type="stmt" count="2"/>
      <line num="612" type="stmt" count="2"/>
      <line num="613" type="stmt" count="2"/>
      <line num="614" type="stmt" count="2"/>
      <line num="615" type="stmt" count="2"/>
      <line num="616" type="stmt" count="2"/>
      <line num="617" type="stmt" count="2"/>
      <line num="618" type="stmt" count="2"/>
      <line num="619" type="stmt" count="2"/>
      <line num="620" type="stmt" count="2"/>
      <line num="621" type="stmt" count="2"/>
      <line num="622" type="stmt" count="2"/>
      <line num="623" type="stmt" count="2"/>
      <line num="624" type="stmt" count="2"/>
      <line num="625" type="stmt" count="2"/>
      <line num="626" type="stmt" count="2"/>
      <line num="627" type="stmt" count="2"/>
      <line num="628" type="stmt" count="2"/>
      <line num="629" type="stmt" count="2"/>
      <line num="630" type="stmt" count="2"/>
      <line num="631" type="stmt" count="2"/>
      <line num="632" type="stmt" count="2"/>
      <line num="633" type="stmt" count="2"/>
      <line num="634" type="stmt" count="2"/>
      <line num="635" type="stmt" count="2"/>
      <line num="636" type="stmt" count="2"/>
      <line num="637" type="stmt" count="2"/>
      <line num="638" type="stmt" count="2"/>
      <line num="639" type="stmt" count="2"/>
      <line num="640" type="stmt" count="2"/>
      <line num="641" type="stmt" count="2"/>
      <line num="642" type="stmt" count="2"/>
      <line num="645" type="stmt" count="2"/>
      <line num="646" type="stmt" count="0"/>
      <line num="649" type="stmt" count="0"/>
      <line num="650" type="stmt" count="0"/>
      <line num="651" type="stmt" count="0"/>
      <line num="652" type="stmt" count="0"/>
      <line num="653" type="stmt" count="0"/>
      <line num="656" type="stmt" count="2"/>
      <line num="660" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="661" type="stmt" count="0"/>
      <line num="662" type="stmt" count="0"/>
      <line num="663" type="stmt" count="0"/>
      <line num="664" type="stmt" count="0"/>
      <line num="665" type="stmt" count="0"/>
      <line num="666" type="stmt" count="0"/>
      <line num="667" type="stmt" count="0"/>
      <line num="668" type="stmt" count="0"/>
      <line num="672" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="673" type="stmt" count="0"/>
      <metrics loc="676" ncloc="541" classes="1" methods="15" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="320" coveredstatements="185" elements="335" coveredelements="187"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoPermissionsTrait.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoPermissionsTrait" namespace="global">
        <metrics complexity="3" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="2" elements="8" coveredelements="2"/>
      </class>
      <line num="40" type="method" name="checkReadNotificationsPermissions" visibility="private" complexity="3" crap="6.28" count="5"/>
      <line num="41" type="stmt" count="5"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="5"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <metrics loc="52" ncloc="31" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="7" coveredstatements="2" elements="8" coveredelements="2"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Api/ApiEchoUnreadNotificationPages.php">
      <class name="MediaWiki\Extension\Notifications\Api\ApiEchoUnreadNotificationPages" namespace="global">
        <metrics complexity="29" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="125" coveredstatements="0" elements="132" coveredelements="0"/>
      </class>
      <line num="31" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="45" type="method" name="execute" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="77" type="method" name="getFromLocal" visibility="protected" complexity="17" crap="306" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="192" type="method" name="getUnreadNotificationPagesFromForeign" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="216" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="222" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="243" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="250" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <metrics loc="254" ncloc="223" classes="1" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="125" coveredstatements="0" elements="132" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ArrayList.php">
      <class name="MediaWiki\Extension\Notifications\ArrayList" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
      </class>
      <line num="11" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="12" type="stmt" count="0"/>
      <line num="17" type="method" name="getValues" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <metrics loc="21" ncloc="13" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/AttributeManager.php">
      <class name="MediaWiki\Extension\Notifications\AttributeManager" namespace="global">
        <metrics complexity="49" methods="20" coveredmethods="15" conditionals="0" coveredconditionals="0" statements="103" coveredstatements="91" elements="123" coveredelements="106"/>
      </class>
      <line num="51" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="28"/>
      <line num="60" type="stmt" count="28"/>
      <line num="69" type="method" name="getUserCallable" visibility="public" complexity="4" crap="4" count="4"/>
      <line num="70" type="stmt" count="4"/>
      <line num="72" type="stmt" count="4"/>
      <line num="74" type="stmt" count="2"/>
      <line num="77" type="stmt" count="4"/>
      <line num="79" type="stmt" count="3"/>
      <line num="80" type="stmt" count="3"/>
      <line num="81" type="stmt" count="3"/>
      <line num="82" type="stmt" count="3"/>
      <line num="84" type="stmt" count="4"/>
      <line num="95" type="method" name="getUserEnabledEvents" visibility="public" complexity="5" crap="5" count="2"/>
      <line num="96" type="stmt" count="2"/>
      <line num="97" type="stmt" count="2"/>
      <line num="99" type="stmt" count="2"/>
      <line num="100" type="stmt" count="2"/>
      <line num="101" type="stmt" count="2"/>
      <line num="102" type="stmt" count="2"/>
      <line num="103" type="stmt" count="2"/>
      <line num="104" type="stmt" count="2"/>
      <line num="105" type="stmt" count="2"/>
      <line num="106" type="stmt" count="2"/>
      <line num="107" type="stmt" count="2"/>
      <line num="108" type="stmt" count="2"/>
      <line num="109" type="stmt" count="2"/>
      <line num="110" type="stmt" count="2"/>
      <line num="111" type="stmt" count="2"/>
      <line num="112" type="stmt" count="2"/>
      <line num="113" type="stmt" count="2"/>
      <line num="114" type="stmt" count="2"/>
      <line num="115" type="stmt" count="2"/>
      <line num="126" type="method" name="getUserEnabledEventsBySections" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="131" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="133" type="stmt" count="1"/>
      <line num="134" type="stmt" count="1"/>
      <line num="135" type="stmt" count="1"/>
      <line num="136" type="stmt" count="1"/>
      <line num="139" type="stmt" count="1"/>
      <line num="140" type="stmt" count="1"/>
      <line num="141" type="stmt" count="1"/>
      <line num="142" type="stmt" count="1"/>
      <line num="152" type="method" name="getEventsForSection" visibility="public" complexity="7" crap="7" count="3"/>
      <line num="153" type="stmt" count="3"/>
      <line num="155" type="stmt" count="3"/>
      <line num="157" type="stmt" count="3"/>
      <line num="160" type="stmt" count="3"/>
      <line num="161" type="stmt" count="3"/>
      <line num="164" type="stmt" count="3"/>
      <line num="165" type="stmt" count="3"/>
      <line num="166" type="stmt" count="3"/>
      <line num="169" type="stmt" count="3"/>
      <line num="170" type="stmt" count="3"/>
      <line num="174" type="stmt" count="3"/>
      <line num="178" type="stmt" count="3"/>
      <line num="186" type="method" name="getInternalCategoryNames" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="198" type="method" name="getCategoryEligibility" visibility="public" complexity="3" crap="3" count="3"/>
      <line num="199" type="stmt" count="3"/>
      <line num="200" type="stmt" count="3"/>
      <line num="201" type="stmt" count="2"/>
      <line num="202" type="stmt" count="2"/>
      <line num="203" type="stmt" count="2"/>
      <line num="207" type="stmt" count="3"/>
      <line num="216" type="method" name="getNotificationPriority" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="217" type="stmt" count="1"/>
      <line num="219" type="stmt" count="1"/>
      <line num="228" type="method" name="getCategoryPriority" visibility="public" complexity="4" crap="4" count="2"/>
      <line num="229" type="stmt" count="2"/>
      <line num="230" type="stmt" count="2"/>
      <line num="231" type="stmt" count="2"/>
      <line num="232" type="stmt" count="2"/>
      <line num="236" type="stmt" count="2"/>
      <line num="245" type="method" name="getCategoryTitle" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="255" type="method" name="getCategoryTooltip" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="266" type="method" name="getNotificationCategory" visibility="public" complexity="3" crap="3" count="4"/>
      <line num="267" type="stmt" count="4"/>
      <line num="268" type="stmt" count="4"/>
      <line num="269" type="stmt" count="4"/>
      <line num="270" type="stmt" count="4"/>
      <line num="274" type="stmt" count="1"/>
      <line num="283" type="method" name="getEventsByCategory" visibility="public" complexity="4" crap="4" count="1"/>
      <line num="284" type="stmt" count="1"/>
      <line num="286" type="stmt" count="1"/>
      <line num="287" type="stmt" count="1"/>
      <line num="290" type="stmt" count="1"/>
      <line num="291" type="stmt" count="1"/>
      <line num="292" type="stmt" count="1"/>
      <line num="295" type="stmt" count="1"/>
      <line num="299" type="stmt" count="1"/>
      <line num="311" type="method" name="getNotifyTypeAvailabilityForCategory" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="312" type="stmt" count="5"/>
      <line num="313" type="stmt" count="5"/>
      <line num="314" type="stmt" count="5"/>
      <line num="315" type="stmt" count="5"/>
      <line num="329" type="method" name="isNotifyTypeAvailableForCategory" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="330" type="stmt" count="5"/>
      <line num="339" type="method" name="isCategoryDisplayedInPreferences" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="341" type="stmt" count="0"/>
      <line num="342" type="stmt" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="357" type="method" name="isNotifyTypeDismissableForCategory" visibility="public" complexity="3" crap="3" count="3"/>
      <line num="358" type="stmt" count="3"/>
      <line num="359" type="stmt" count="3"/>
      <line num="360" type="stmt" count="3"/>
      <line num="361" type="stmt" count="3"/>
      <line num="362" type="stmt" count="3"/>
      <line num="363" type="stmt" count="3"/>
      <line num="364" type="stmt" count="3"/>
      <line num="372" type="method" name="getNotificationSection" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="373" type="stmt" count="4"/>
      <line num="381" type="method" name="getNotifyAgentEvents" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="382" type="stmt" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="385" type="stmt" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="395" type="method" name="isBundleExpandable" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="396" type="stmt" count="5"/>
      <line num="401" type="stmt" count="0"/>
      <metrics loc="402" ncloc="239" classes="1" methods="20" coveredmethods="15" conditionals="0" coveredconditionals="0" statements="104" coveredstatements="91" elements="124" coveredelements="106"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Bundleable.php">
      <metrics loc="30" ncloc="15" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Bundler.php">
      <class name="MediaWiki\Extension\Notifications\Bundler" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="16" elements="18" coveredelements="18"/>
      </class>
      <line num="10" type="method" name="sort" visibility="private" complexity="1" crap="1" count="1"/>
      <line num="11" type="stmt" count="1"/>
      <line num="12" type="stmt" count="1"/>
      <line num="13" type="stmt" count="1"/>
      <line num="22" type="method" name="bundle" visibility="public" complexity="5" crap="5" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="27" type="stmt" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <metrics loc="48" ncloc="37" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="16" coveredstatements="16" elements="18" coveredelements="18"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Cache/LocalCache.php">
      <class name="MediaWiki\Extension\Notifications\Cache\LocalCache" namespace="global">
        <metrics complexity="10" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="22" coveredelements="0"/>
      </class>
      <line num="45" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="54" type="method" name="add" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="69" type="method" name="get" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="94" type="method" name="clearAll" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <metrics loc="100" ncloc="58" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="22" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Cache/RevisionLocalCache.php">
      <class name="MediaWiki\Extension\Notifications\Cache\RevisionLocalCache" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="0" elements="12" coveredelements="0"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="23" type="method" name="resolve" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <metrics loc="36" ncloc="29" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="0" elements="12" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Cache/TitleLocalCache.php">
      <class name="MediaWiki\Extension\Notifications\Cache\TitleLocalCache" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="1" elements="12" coveredelements="2"/>
      </class>
      <line num="15" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="19" type="stmt" count="3"/>
      <line num="25" type="method" name="resolve" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <metrics loc="42" ncloc="33" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="1" elements="12" coveredelements="2"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ConfigNames.php">
      <class name="MediaWiki\Extension\Notifications\ConfigNames" namespace="global">
        <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="26" ncloc="19" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ContainmentList.php">
      <metrics loc="14" ncloc="8" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ContainmentSet.php">
      <class name="MediaWiki\Extension\Notifications\ContainmentSet" namespace="global">
        <metrics complexity="11" methods="7" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="13" elements="29" coveredelements="18"/>
      </class>
      <line num="31" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="37" type="method" name="add" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="44" type="method" name="addArray" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="51" type="method" name="addFromUserOption" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="67" type="method" name="addTitleIDsFromUserOption" visibility="public" complexity="2" crap="2" count="4"/>
      <line num="68" type="stmt" count="4"/>
      <line num="69" type="stmt" count="4"/>
      <line num="70" type="stmt" count="4"/>
      <line num="74" type="stmt" count="1"/>
      <line num="76" type="stmt" count="3"/>
      <line num="77" type="stmt" count="3"/>
      <line num="90" type="method" name="addOnWiki" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="102" type="method" name="contains" visibility="public" complexity="3" crap="3" count="5"/>
      <line num="103" type="stmt" count="5"/>
      <line num="105" type="stmt" count="5"/>
      <line num="106" type="stmt" count="1"/>
      <line num="110" type="stmt" count="5"/>
      <metrics loc="113" ncloc="62" classes="1" methods="7" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="13" elements="29" coveredelements="18"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Controller/EventController.php">
      <class name="MediaWiki\Extension\Notifications\Controller\EventController" namespace="global">
        <metrics complexity="7" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="20" elements="24" coveredelements="24"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="25" type="stmt" count="5"/>
      <line num="36" type="method" name="toggleHiddenState" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="37" type="stmt" count="3"/>
      <line num="38" type="stmt" count="1"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="2"/>
      <line num="44" type="stmt" count="2"/>
      <line num="53" type="method" name="delete" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="68" type="method" name="resetNotificationCountsAfterCommit" visibility="private" complexity="2" crap="2" count="3"/>
      <line num="69" type="stmt" count="3"/>
      <line num="70" type="stmt" count="3"/>
      <line num="73" type="stmt" count="3"/>
      <line num="74" type="stmt" count="3"/>
      <line num="77" type="stmt" count="3"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="81" type="stmt" count="3"/>
      <metrics loc="84" ncloc="58" classes="1" methods="4" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="20" elements="24" coveredelements="24"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Controller/ModerationController.php">
      <class name="MediaWiki\Extension\Notifications\Controller\ModerationController" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="0" elements="2" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="moderate" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <metrics loc="25" ncloc="13" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="1" coveredstatements="0" elements="2" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Controller/NotificationController.php">
      <class name="MediaWiki\Extension\Notifications\Controller\NotificationController" namespace="global">
        <metrics complexity="73" methods="16" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="226" coveredstatements="153" elements="242" coveredelements="158"/>
      </class>
      <line num="81" type="method" name="getCappedNotificationCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="95" type="method" name="formatNotificationCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="107" type="method" name="notify" visibility="public" complexity="11" crap="11.08" count="5"/>
      <line num="110" type="stmt" count="5"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="122" type="stmt" count="5"/>
      <line num="123" type="stmt" count="1"/>
      <line num="126" type="stmt" count="4"/>
      <line num="127" type="stmt" count="4"/>
      <line num="128" type="stmt" count="4"/>
      <line num="129" type="stmt" count="4"/>
      <line num="130" type="stmt" count="4"/>
      <line num="131" type="stmt" count="4"/>
      <line num="133" type="stmt" count="4"/>
      <line num="135" type="stmt" count="4"/>
      <line num="136" type="stmt" count="3"/>
      <line num="137" type="stmt" count="3"/>
      <line num="140" type="stmt" count="3"/>
      <line num="141" type="stmt" count="3"/>
      <line num="143" type="stmt" count="3"/>
      <line num="145" type="stmt" count="3"/>
      <line num="146" type="stmt" count="0"/>
      <line num="149" type="stmt" count="3"/>
      <line num="152" type="stmt" count="3"/>
      <line num="153" type="stmt" count="3"/>
      <line num="157" type="stmt" count="3"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="162" type="stmt" count="3"/>
      <line num="163" type="stmt" count="3"/>
      <line num="164" type="stmt" count="3"/>
      <line num="165" type="stmt" count="3"/>
      <line num="169" type="stmt" count="4"/>
      <line num="170" type="stmt" count="3"/>
      <line num="180" type="method" name="hasMinorRevision" visibility="private" complexity="3" crap="4.60" count="3"/>
      <line num="181" type="stmt" count="3"/>
      <line num="182" type="stmt" count="3"/>
      <line num="183" type="stmt" count="2"/>
      <line num="186" type="stmt" count="1"/>
      <line num="187" type="stmt" count="1"/>
      <line num="188" type="stmt" count="1"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="200" type="stmt" count="1"/>
      <line num="209" type="method" name="enqueueDeleteJob" visibility="public" complexity="3" crap="3.00" count="3"/>
      <line num="211" type="stmt" count="3"/>
      <line num="212" type="stmt" count="0"/>
      <line num="215" type="stmt" count="3"/>
      <line num="216" type="stmt" count="3"/>
      <line num="217" type="stmt" count="3"/>
      <line num="218" type="stmt" count="3"/>
      <line num="219" type="stmt" count="3"/>
      <line num="220" type="stmt" count="3"/>
      <line num="221" type="stmt" count="3"/>
      <line num="222" type="stmt" count="3"/>
      <line num="223" type="stmt" count="3"/>
      <line num="224" type="stmt" count="3"/>
      <line num="225" type="stmt" count="3"/>
      <line num="235" type="method" name="getEventNotifyTypes" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="236" type="stmt" count="6"/>
      <line num="238" type="stmt" count="6"/>
      <line num="240" type="stmt" count="6"/>
      <line num="241" type="stmt" count="6"/>
      <line num="242" type="stmt" count="6"/>
      <line num="250" type="method" name="getEventParams" visibility="public" complexity="5" crap="5" count="4"/>
      <line num="251" type="stmt" count="4"/>
      <line num="252" type="stmt" count="4"/>
      <line num="253" type="stmt" count="4"/>
      <line num="255" type="stmt" count="4"/>
      <line num="256" type="stmt" count="1"/>
      <line num="257" type="stmt" count="3"/>
      <line num="258" type="stmt" count="4"/>
      <line num="259" type="stmt" count="4"/>
      <line num="260" type="stmt" count="4"/>
      <line num="261" type="stmt" count="4"/>
      <line num="267" type="method" name="enqueueEvent" visibility="public" complexity="4" crap="4" count="3"/>
      <line num="268" type="stmt" count="3"/>
      <line num="269" type="stmt" count="3"/>
      <line num="271" type="stmt" count="3"/>
      <line num="272" type="stmt" count="3"/>
      <line num="273" type="stmt" count="3"/>
      <line num="275" type="stmt" count="3"/>
      <line num="276" type="stmt" count="1"/>
      <line num="277" type="stmt" count="1"/>
      <line num="278" type="stmt" count="1"/>
      <line num="279" type="stmt" count="1"/>
      <line num="280" type="stmt" count="1"/>
      <line num="281" type="stmt" count="1"/>
      <line num="282" type="stmt" count="1"/>
      <line num="283" type="stmt" count="1"/>
      <line num="284" type="stmt" count="1"/>
      <line num="287" type="stmt" count="2"/>
      <line num="298" type="method" name="isBlacklistedByUser" visibility="public" complexity="9" crap="19.12" count="6"/>
      <line num="301" type="stmt" count="6"/>
      <line num="302" type="stmt" count="3"/>
      <line num="306" type="stmt" count="3"/>
      <line num="307" type="stmt" count="0"/>
      <line num="311" type="stmt" count="3"/>
      <line num="312" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="318" type="stmt" count="0"/>
      <line num="319" type="stmt" count="0"/>
      <line num="320" type="stmt" count="0"/>
      <line num="324" type="stmt" count="0"/>
      <line num="325" type="stmt" count="0"/>
      <line num="329" type="stmt" count="0"/>
      <line num="332" type="stmt" count="3"/>
      <line num="334" type="stmt" count="3"/>
      <line num="335" type="stmt" count="3"/>
      <line num="336" type="stmt" count="3"/>
      <line num="337" type="stmt" count="3"/>
      <line num="346" type="method" name="doesPageLinkMuteListApply" visibility="private" complexity="2" crap="2" count="1"/>
      <line num="348" type="stmt" count="1"/>
      <line num="349" type="stmt" count="1"/>
      <line num="359" type="method" name="isPageLinkedTitleMutedByUser" visibility="public" complexity="3" crap="3.07" count="3"/>
      <line num="360" type="stmt" count="3"/>
      <line num="361" type="stmt" count="0"/>
      <line num="363" type="stmt" count="3"/>
      <line num="364" type="stmt" count="3"/>
      <line num="365" type="stmt" count="3"/>
      <line num="366" type="stmt" count="3"/>
      <line num="367" type="stmt" count="3"/>
      <line num="368" type="stmt" count="3"/>
      <line num="370" type="stmt" count="0"/>
      <line num="372" type="stmt" count="3"/>
      <line num="378" type="method" name="getWikiBlacklist" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="380" type="stmt" count="0"/>
      <line num="381" type="stmt" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="385" type="stmt" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="387" type="stmt" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="390" type="stmt" count="0"/>
      <line num="393" type="stmt" count="0"/>
      <line num="403" type="method" name="isWhitelistedByUser" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="404" type="stmt" count="0"/>
      <line num="407" type="stmt" count="0"/>
      <line num="408" type="stmt" count="0"/>
      <line num="411" type="stmt" count="0"/>
      <line num="412" type="stmt" count="0"/>
      <line num="414" type="stmt" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="423" type="stmt" count="0"/>
      <line num="424" type="stmt" count="0"/>
      <line num="425" type="stmt" count="0"/>
      <line num="426" type="stmt" count="0"/>
      <line num="427" type="stmt" count="0"/>
      <line num="428" type="stmt" count="0"/>
      <line num="429" type="stmt" count="0"/>
      <line num="430" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="434" type="stmt" count="0"/>
      <line num="436" type="stmt" count="0"/>
      <line num="446" type="method" name="doNotification" visibility="public" complexity="3" crap="3.58" count="3"/>
      <line num="449" type="stmt" count="3"/>
      <line num="450" type="stmt" count="0"/>
      <line num="454" type="stmt" count="3"/>
      <line num="455" type="stmt" count="0"/>
      <line num="458" type="stmt" count="3"/>
      <line num="469" type="method" name="evaluateUserCallable" visibility="public" complexity="4" crap="4" count="13"/>
      <line num="470" type="stmt" count="13"/>
      <line num="471" type="stmt" count="13"/>
      <line num="472" type="stmt" count="13"/>
      <line num="473" type="stmt" count="13"/>
      <line num="476" type="stmt" count="13"/>
      <line num="477" type="stmt" count="13"/>
      <line num="478" type="stmt" count="13"/>
      <line num="480" type="stmt" count="10"/>
      <line num="482" type="stmt" count="13"/>
      <line num="483" type="stmt" count="13"/>
      <line num="485" type="stmt" count="1"/>
      <line num="489" type="stmt" count="13"/>
      <line num="498" type="method" name="getUsersToNotifyForEvent" visibility="public" complexity="14" crap="17.82" count="8"/>
      <line num="499" type="stmt" count="8"/>
      <line num="500" type="stmt" count="8"/>
      <line num="502" type="stmt" count="8"/>
      <line num="503" type="stmt" count="8"/>
      <line num="504" type="stmt" count="8"/>
      <line num="509" type="stmt" count="8"/>
      <line num="510" type="stmt" count="8"/>
      <line num="511" type="stmt" count="8"/>
      <line num="512" type="stmt" count="8"/>
      <line num="513" type="stmt" count="0"/>
      <line num="517" type="stmt" count="8"/>
      <line num="519" type="stmt" count="0"/>
      <line num="520" type="stmt" count="0"/>
      <line num="523" type="stmt" count="0"/>
      <line num="524" type="stmt" count="0"/>
      <line num="525" type="stmt" count="0"/>
      <line num="526" type="stmt" count="0"/>
      <line num="527" type="stmt" count="0"/>
      <line num="528" type="stmt" count="0"/>
      <line num="532" type="stmt" count="8"/>
      <line num="533" type="stmt" count="8"/>
      <line num="534" type="stmt" count="8"/>
      <line num="535" type="stmt" count="7"/>
      <line num="536" type="stmt" count="1"/>
      <line num="537" type="stmt" count="1"/>
      <line num="538" type="stmt" count="1"/>
      <line num="540" type="stmt" count="1"/>
      <line num="542" type="stmt" count="7"/>
      <line num="543" type="stmt" count="2"/>
      <line num="545" type="stmt" count="6"/>
      <line num="547" type="stmt" count="6"/>
      <line num="548" type="stmt" count="8"/>
      <line num="551" type="stmt" count="8"/>
      <line num="552" type="stmt" count="0"/>
      <line num="553" type="stmt" count="0"/>
      <line num="554" type="stmt" count="0"/>
      <line num="555" type="stmt" count="0"/>
      <line num="559" type="stmt" count="8"/>
      <line num="560" type="stmt" count="6"/>
      <line num="562" type="stmt" count="6"/>
      <line num="564" type="stmt" count="6"/>
      <line num="565" type="stmt" count="6"/>
      <line num="568" type="stmt" count="6"/>
      <line num="569" type="stmt" count="6"/>
      <line num="570" type="stmt" count="6"/>
      <line num="573" type="stmt" count="0"/>
      <line num="576" type="stmt" count="6"/>
      <line num="577" type="stmt" count="8"/>
      <line num="580" type="stmt" count="8"/>
      <line num="581" type="stmt" count="6"/>
      <line num="582" type="stmt" count="8"/>
      <line num="584" type="stmt" count="8"/>
      <metrics loc="587" ncloc="411" classes="1" methods="16" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="226" coveredstatements="153" elements="242" coveredelements="158"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DataOutputFormatter.php">
      <class name="MediaWiki\Extension\Notifications\DataOutputFormatter" namespace="global">
        <metrics complexity="22" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="95" coveredstatements="0" elements="99" coveredelements="0"/>
      </class>
      <line num="48" type="method" name="formatOutput" visibility="public" complexity="17" crap="306" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="195" type="method" name="formatNotification" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="214" type="method" name="getDateHeader" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="228" type="method" name="getUserLocalTime" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <metrics loc="236" ncloc="174" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="95" coveredstatements="0" elements="99" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DbDomains.php">
      <class name="MediaWiki\Extension\Notifications\DbDomains" namespace="global">
        <metrics complexity="9" methods="3" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="10" elements="17" coveredelements="11"/>
      </class>
      <line num="34" type="method" name="isSharedTrackingConfigured" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="43" type="method" name="canRetryPrimary" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="56" type="method" name="onRegistration" visibility="public" complexity="6" crap="6" count="5"/>
      <line num="60" type="stmt" count="5"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="70" type="stmt" count="5"/>
      <line num="71" type="stmt" count="2"/>
      <line num="72" type="stmt" count="2"/>
      <line num="73" type="stmt" count="1"/>
      <line num="75" type="stmt" count="2"/>
      <metrics loc="79" ncloc="46" classes="1" methods="3" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="14" coveredstatements="10" elements="17" coveredelements="11"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DbFactory.php">
      <class name="MediaWiki\Extension\Notifications\DbFactory" namespace="global">
        <metrics complexity="13" methods="8" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="5" elements="35" coveredelements="7"/>
      </class>
      <line num="28" type="method" name="newFromDefault" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="35" type="method" name="isReadOnly" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="43" type="method" name="getLB" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="51" type="method" name="getSharedLB" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="62" type="method" name="getEchoDb" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="77" type="method" name="getSharedDb" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="103" type="method" name="getDB" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="127" type="method" name="canRetryPrimary" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <metrics loc="133" ncloc="77" classes="1" methods="8" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="28" coveredstatements="5" elements="36" coveredelements="7"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DeferredMarkAsDeletedUpdate.php">
      <class name="MediaWiki\Extension\Notifications\DeferredMarkAsDeletedUpdate" namespace="global">
        <metrics complexity="7" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="35" coveredelements="0"/>
      </class>
      <line num="20" type="method" name="add" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="29" type="method" name="addInternal" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="33" type="method" name="filterEventsWithTitleDbLag" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="60" type="method" name="doUpdate" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <metrics loc="74" ncloc="60" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="35" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DiffGroup.php">
      <class name="MediaWiki\Extension\Notifications\DiffGroup" namespace="global">
        <metrics complexity="8" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="32" coveredstatements="0" elements="36" coveredelements="0"/>
      </class>
      <line num="50" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="61" type="method" name="add" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="68" type="method" name="subtract" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="83" type="method" name="getChangeSet" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <metrics loc="119" ncloc="63" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="32" coveredstatements="0" elements="36" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DiffParser.php">
      <class name="MediaWiki\Extension\Notifications\DiffParser" namespace="global">
        <metrics complexity="20" methods="4" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="85" coveredstatements="79" elements="89" coveredelements="81"/>
      </class>
      <line num="85" type="method" name="getChangeSet" visibility="public" complexity="2" crap="2" count="14"/>
      <line num="86" type="stmt" count="14"/>
      <line num="87" type="stmt" count="14"/>
      <line num="89" type="stmt" count="14"/>
      <line num="91" type="stmt" count="3"/>
      <line num="94" type="stmt" count="11"/>
      <line num="95" type="stmt" count="11"/>
      <line num="96" type="stmt" count="11"/>
      <line num="98" type="stmt" count="11"/>
      <line num="107" type="method" name="getChangeSetFromEmptyLeft" visibility="private" complexity="1" crap="1" count="3"/>
      <line num="108" type="stmt" count="3"/>
      <line num="110" type="stmt" count="3"/>
      <line num="111" type="stmt" count="3"/>
      <line num="112" type="stmt" count="3"/>
      <line num="113" type="stmt" count="3"/>
      <line num="114" type="stmt" count="3"/>
      <line num="115" type="stmt" count="3"/>
      <line num="116" type="stmt" count="3"/>
      <line num="117" type="stmt" count="3"/>
      <line num="118" type="stmt" count="3"/>
      <line num="119" type="stmt" count="3"/>
      <line num="120" type="stmt" count="3"/>
      <line num="121" type="stmt" count="3"/>
      <line num="122" type="stmt" count="3"/>
      <line num="123" type="stmt" count="3"/>
      <line num="135" type="method" name="parse" visibility="protected" complexity="3" crap="3.00" count="11"/>
      <line num="136" type="stmt" count="11"/>
      <line num="137" type="stmt" count="11"/>
      <line num="138" type="stmt" count="11"/>
      <line num="140" type="stmt" count="11"/>
      <line num="141" type="stmt" count="11"/>
      <line num="142" type="stmt" count="11"/>
      <line num="143" type="stmt" count="11"/>
      <line num="144" type="stmt" count="11"/>
      <line num="145" type="stmt" count="11"/>
      <line num="146" type="stmt" count="11"/>
      <line num="147" type="stmt" count="11"/>
      <line num="148" type="stmt" count="11"/>
      <line num="149" type="stmt" count="11"/>
      <line num="151" type="stmt" count="11"/>
      <line num="152" type="stmt" count="11"/>
      <line num="153" type="stmt" count="11"/>
      <line num="155" type="stmt" count="11"/>
      <line num="156" type="stmt" count="11"/>
      <line num="159" type="stmt" count="0"/>
      <line num="170" type="method" name="parseLine" visibility="protected" complexity="14" crap="14.31" count="11"/>
      <line num="171" type="stmt" count="11"/>
      <line num="172" type="stmt" count="10"/>
      <line num="173" type="stmt" count="10"/>
      <line num="174" type="stmt" count="10"/>
      <line num="176" type="stmt" count="3"/>
      <line num="179" type="stmt" count="11"/>
      <line num="183" type="stmt" count="11"/>
      <line num="185" type="stmt" count="10"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="190" type="stmt" count="10"/>
      <line num="191" type="stmt" count="10"/>
      <line num="192" type="stmt" count="10"/>
      <line num="193" type="stmt" count="10"/>
      <line num="194" type="stmt" count="10"/>
      <line num="197" type="stmt" count="10"/>
      <line num="198" type="stmt" count="10"/>
      <line num="199" type="stmt" count="10"/>
      <line num="201" type="stmt" count="11"/>
      <line num="203" type="stmt" count="11"/>
      <line num="204" type="stmt" count="10"/>
      <line num="205" type="stmt" count="10"/>
      <line num="207" type="stmt" count="11"/>
      <line num="208" type="stmt" count="11"/>
      <line num="209" type="stmt" count="11"/>
      <line num="211" type="stmt" count="10"/>
      <line num="213" type="stmt" count="7"/>
      <line num="214" type="stmt" count="0"/>
      <line num="216" type="stmt" count="7"/>
      <line num="218" type="stmt" count="7"/>
      <line num="220" type="stmt" count="7"/>
      <line num="221" type="stmt" count="7"/>
      <line num="222" type="stmt" count="7"/>
      <line num="224" type="stmt" count="8"/>
      <line num="226" type="stmt" count="8"/>
      <line num="227" type="stmt" count="0"/>
      <line num="229" type="stmt" count="8"/>
      <line num="231" type="stmt" count="3"/>
      <line num="233" type="stmt" count="8"/>
      <line num="234" type="stmt" count="8"/>
      <line num="235" type="stmt" count="8"/>
      <line num="238" type="stmt" count="0"/>
      <line num="241" type="stmt" count="11"/>
      <metrics loc="244" ncloc="152" classes="1" methods="4" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="85" coveredstatements="79" elements="89" coveredelements="81"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/DiscussionParser.php">
      <class name="MediaWiki\Extension\Notifications\DiscussionParser" namespace="global">
        <metrics complexity="158" methods="33" coveredmethods="22" conditionals="0" coveredconditionals="0" statements="563" coveredstatements="488" elements="596" coveredelements="510"/>
      </class>
      <line num="51" type="method" name="generateEventsForRevision" visibility="public" complexity="29" crap="30.43" count="19"/>
      <line num="54" type="stmt" count="19"/>
      <line num="55" type="stmt" count="19"/>
      <line num="56" type="stmt" count="19"/>
      <line num="59" type="stmt" count="19"/>
      <line num="60" type="stmt" count="1"/>
      <line num="63" type="stmt" count="19"/>
      <line num="67" type="stmt" count="19"/>
      <line num="68" type="stmt" count="0"/>
      <line num="71" type="stmt" count="19"/>
      <line num="73" type="stmt" count="19"/>
      <line num="74" type="stmt" count="19"/>
      <line num="76" type="stmt" count="19"/>
      <line num="77" type="stmt" count="19"/>
      <line num="78" type="stmt" count="11"/>
      <line num="79" type="stmt" count="11"/>
      <line num="80" type="stmt" count="11"/>
      <line num="81" type="stmt" count="11"/>
      <line num="82" type="stmt" count="11"/>
      <line num="83" type="stmt" count="11"/>
      <line num="84" type="stmt" count="11"/>
      <line num="85" type="stmt" count="19"/>
      <line num="86" type="stmt" count="6"/>
      <line num="87" type="stmt" count="6"/>
      <line num="88" type="stmt" count="6"/>
      <line num="89" type="stmt" count="6"/>
      <line num="90" type="stmt" count="6"/>
      <line num="91" type="stmt" count="6"/>
      <line num="92" type="stmt" count="6"/>
      <line num="93" type="stmt" count="18"/>
      <line num="94" type="stmt" count="3"/>
      <line num="95" type="stmt" count="3"/>
      <line num="96" type="stmt" count="3"/>
      <line num="97" type="stmt" count="3"/>
      <line num="98" type="stmt" count="3"/>
      <line num="99" type="stmt" count="3"/>
      <line num="100" type="stmt" count="3"/>
      <line num="101" type="stmt" count="18"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="1"/>
      <line num="104" type="stmt" count="1"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="117" type="stmt" count="19"/>
      <line num="118" type="stmt" count="4"/>
      <line num="120" type="stmt" count="4"/>
      <line num="121" type="stmt" count="4"/>
      <line num="124" type="stmt" count="4"/>
      <line num="125" type="stmt" count="4"/>
      <line num="126" type="stmt" count="4"/>
      <line num="127" type="stmt" count="3"/>
      <line num="128" type="stmt" count="3"/>
      <line num="129" type="stmt" count="3"/>
      <line num="132" type="stmt" count="4"/>
      <line num="133" type="stmt" count="4"/>
      <line num="134" type="stmt" count="4"/>
      <line num="135" type="stmt" count="4"/>
      <line num="136" type="stmt" count="4"/>
      <line num="137" type="stmt" count="4"/>
      <line num="138" type="stmt" count="4"/>
      <line num="139" type="stmt" count="4"/>
      <line num="140" type="stmt" count="4"/>
      <line num="141" type="stmt" count="4"/>
      <line num="142" type="stmt" count="4"/>
      <line num="143" type="stmt" count="4"/>
      <line num="146" type="stmt" count="16"/>
      <line num="147" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="165" type="stmt" count="19"/>
      <line num="166" type="stmt" count="19"/>
      <line num="167" type="stmt" count="19"/>
      <line num="169" type="stmt" count="6"/>
      <line num="170" type="stmt" count="6"/>
      <line num="173" type="stmt" count="6"/>
      <line num="175" type="stmt" count="6"/>
      <line num="176" type="stmt" count="6"/>
      <line num="177" type="stmt" count="6"/>
      <line num="178" type="stmt" count="1"/>
      <line num="180" type="stmt" count="0"/>
      <line num="182" type="stmt" count="1"/>
      <line num="183" type="stmt" count="0"/>
      <line num="185" type="stmt" count="1"/>
      <line num="186" type="stmt" count="1"/>
      <line num="189" type="stmt" count="6"/>
      <line num="190" type="stmt" count="1"/>
      <line num="191" type="stmt" count="1"/>
      <line num="192" type="stmt" count="1"/>
      <line num="193" type="stmt" count="1"/>
      <line num="194" type="stmt" count="1"/>
      <line num="195" type="stmt" count="1"/>
      <line num="196" type="stmt" count="1"/>
      <line num="197" type="stmt" count="1"/>
      <line num="198" type="stmt" count="1"/>
      <line num="204" type="stmt" count="19"/>
      <line num="205" type="stmt" count="19"/>
      <line num="208" type="stmt" count="19"/>
      <line num="209" type="stmt" count="17"/>
      <line num="220" type="method" name="detectSectionTitleAndText" visibility="public" complexity="7" crap="7" count="9"/>
      <line num="221" type="stmt" count="9"/>
      <line num="222" type="stmt" count="9"/>
      <line num="224" type="stmt" count="9"/>
      <line num="225" type="stmt" count="9"/>
      <line num="226" type="stmt" count="9"/>
      <line num="227" type="stmt" count="7"/>
      <line num="228" type="stmt" count="7"/>
      <line num="229" type="stmt" count="7"/>
      <line num="230" type="stmt" count="7"/>
      <line num="231" type="stmt" count="7"/>
      <line num="232" type="stmt" count="7"/>
      <line num="233" type="stmt" count="7"/>
      <line num="234" type="stmt" count="4"/>
      <line num="235" type="stmt" count="2"/>
      <line num="236" type="stmt" count="2"/>
      <line num="237" type="stmt" count="2"/>
      <line num="238" type="stmt" count="2"/>
      <line num="239" type="stmt" count="2"/>
      <line num="240" type="stmt" count="2"/>
      <line num="241" type="stmt" count="2"/>
      <line num="243" type="stmt" count="9"/>
      <line num="246" type="stmt" count="7"/>
      <line num="247" type="stmt" count="1"/>
      <line num="248" type="stmt" count="1"/>
      <line num="250" type="stmt" count="7"/>
      <line num="253" type="stmt" count="9"/>
      <line num="254" type="stmt" count="5"/>
      <line num="257" type="stmt" count="6"/>
      <line num="269" type="method" name="collectMentionEvents" visibility="protected" complexity="10" crap="10.43" count="18"/>
      <line num="278" type="stmt" count="18"/>
      <line num="279" type="stmt" count="18"/>
      <line num="280" type="stmt" count="18"/>
      <line num="282" type="stmt" count="18"/>
      <line num="283" type="stmt" count="0"/>
      <line num="286" type="stmt" count="18"/>
      <line num="287" type="stmt" count="18"/>
      <line num="288" type="stmt" count="18"/>
      <line num="289" type="stmt" count="18"/>
      <line num="290" type="stmt" count="18"/>
      <line num="291" type="stmt" count="3"/>
      <line num="294" type="stmt" count="15"/>
      <line num="296" type="stmt" count="15"/>
      <line num="297" type="stmt" count="1"/>
      <line num="298" type="stmt" count="1"/>
      <line num="299" type="stmt" count="1"/>
      <line num="300" type="stmt" count="1"/>
      <line num="301" type="stmt" count="1"/>
      <line num="302" type="stmt" count="1"/>
      <line num="303" type="stmt" count="1"/>
      <line num="304" type="stmt" count="1"/>
      <line num="305" type="stmt" count="1"/>
      <line num="306" type="stmt" count="1"/>
      <line num="308" type="stmt" count="1"/>
      <line num="311" type="stmt" count="14"/>
      <line num="312" type="stmt" count="9"/>
      <line num="313" type="stmt" count="9"/>
      <line num="314" type="stmt" count="9"/>
      <line num="315" type="stmt" count="9"/>
      <line num="316" type="stmt" count="9"/>
      <line num="317" type="stmt" count="9"/>
      <line num="318" type="stmt" count="9"/>
      <line num="319" type="stmt" count="9"/>
      <line num="320" type="stmt" count="9"/>
      <line num="321" type="stmt" count="9"/>
      <line num="322" type="stmt" count="9"/>
      <line num="325" type="stmt" count="14"/>
      <line num="326" type="stmt" count="10"/>
      <line num="328" type="stmt" count="10"/>
      <line num="329" type="stmt" count="5"/>
      <line num="330" type="stmt" count="5"/>
      <line num="331" type="stmt" count="5"/>
      <line num="332" type="stmt" count="5"/>
      <line num="333" type="stmt" count="5"/>
      <line num="334" type="stmt" count="5"/>
      <line num="335" type="stmt" count="5"/>
      <line num="336" type="stmt" count="5"/>
      <line num="337" type="stmt" count="5"/>
      <line num="338" type="stmt" count="5"/>
      <line num="342" type="stmt" count="10"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="346" type="stmt" count="0"/>
      <line num="347" type="stmt" count="0"/>
      <line num="348" type="stmt" count="0"/>
      <line num="349" type="stmt" count="0"/>
      <line num="350" type="stmt" count="0"/>
      <line num="351" type="stmt" count="0"/>
      <line num="352" type="stmt" count="0"/>
      <line num="353" type="stmt" count="0"/>
      <line num="357" type="stmt" count="10"/>
      <line num="358" type="stmt" count="5"/>
      <line num="359" type="stmt" count="5"/>
      <line num="360" type="stmt" count="5"/>
      <line num="361" type="stmt" count="5"/>
      <line num="362" type="stmt" count="5"/>
      <line num="363" type="stmt" count="5"/>
      <line num="364" type="stmt" count="5"/>
      <line num="365" type="stmt" count="5"/>
      <line num="366" type="stmt" count="5"/>
      <line num="367" type="stmt" count="5"/>
      <line num="368" type="stmt" count="5"/>
      <line num="372" type="stmt" count="14"/>
      <line num="375" type="method" name="getOverallUserMentionsCount" visibility="private" complexity="1" crap="1" count="20"/>
      <line num="376" type="stmt" count="20"/>
      <line num="389" type="method" name="getUserMentions" visibility="public" complexity="10" crap="10.18" count="23"/>
      <line num="392" type="stmt" count="23"/>
      <line num="393" type="stmt" count="23"/>
      <line num="394" type="stmt" count="23"/>
      <line num="395" type="stmt" count="23"/>
      <line num="396" type="stmt" count="23"/>
      <line num="398" type="stmt" count="23"/>
      <line num="399" type="stmt" count="23"/>
      <line num="400" type="stmt" count="23"/>
      <line num="402" type="stmt" count="23"/>
      <line num="405" type="stmt" count="23"/>
      <line num="406" type="stmt" count="2"/>
      <line num="411" type="stmt" count="23"/>
      <line num="412" type="stmt" count="2"/>
      <line num="416" type="stmt" count="23"/>
      <line num="417" type="stmt" count="2"/>
      <line num="418" type="stmt" count="2"/>
      <line num="419" type="stmt" count="2"/>
      <line num="422" type="stmt" count="22"/>
      <line num="424" type="stmt" count="22"/>
      <line num="425" type="stmt" count="0"/>
      <line num="426" type="stmt" count="0"/>
      <line num="427" type="stmt" count="0"/>
      <line num="431" type="stmt" count="22"/>
      <line num="432" type="stmt" count="17"/>
      <line num="436" type="stmt" count="18"/>
      <line num="437" type="stmt" count="0"/>
      <line num="441" type="stmt" count="18"/>
      <line num="442" type="stmt" count="8"/>
      <line num="443" type="stmt" count="8"/>
      <line num="444" type="stmt" count="8"/>
      <line num="447" type="stmt" count="10"/>
      <line num="448" type="stmt" count="10"/>
      <line num="451" type="stmt" count="23"/>
      <line num="460" type="method" name="getUserLinks" visibility="public" complexity="2" crap="2" count="18"/>
      <line num="461" type="stmt" count="18"/>
      <line num="462" type="stmt" count="18"/>
      <line num="463" type="stmt" count="18"/>
      <line num="464" type="stmt" count="18"/>
      <line num="465" type="stmt" count="18"/>
      <line num="467" type="stmt" count="18"/>
      <line num="470" type="method" name="hasSubpage" visibility="private" complexity="1" crap="1" count="23"/>
      <line num="471" type="stmt" count="23"/>
      <line num="484" type="method" name="parseNonEditWikitext" visibility="public" complexity="2" crap="2" count="18"/>
      <line num="485" type="stmt" count="18"/>
      <line num="487" type="stmt" count="18"/>
      <line num="489" type="stmt" count="18"/>
      <line num="490" type="stmt" count="2"/>
      <line num="493" type="stmt" count="17"/>
      <line num="495" type="stmt" count="17"/>
      <line num="496" type="stmt" count="17"/>
      <line num="497" type="stmt" count="17"/>
      <line num="499" type="stmt" count="17"/>
      <line num="510" type="method" name="getChangeInterpretationForRevision" visibility="private" complexity="9" crap="9" count="19"/>
      <line num="511" type="stmt" count="19"/>
      <line num="512" type="stmt" count="19"/>
      <line num="513" type="stmt" count="19"/>
      <line num="514" type="stmt" count="19"/>
      <line num="515" type="stmt" count="18"/>
      <line num="518" type="stmt" count="0"/>
      <line num="521" type="stmt" count="19"/>
      <line num="523" type="stmt" count="19"/>
      <line num="524" type="stmt" count="19"/>
      <line num="525" type="stmt" count="1"/>
      <line num="526" type="stmt" count="1"/>
      <line num="527" type="stmt" count="1"/>
      <line num="528" type="stmt" count="1"/>
      <line num="529" type="stmt" count="1"/>
      <line num="533" type="stmt" count="19"/>
      <line num="534" type="stmt" count="19"/>
      <line num="535" type="stmt" count="19"/>
      <line num="536" type="stmt" count="19"/>
      <line num="537" type="stmt" count="19"/>
      <line num="538" type="stmt" count="19"/>
      <line num="539" type="stmt" count="19"/>
      <line num="540" type="stmt" count="19"/>
      <line num="541" type="stmt" count="19"/>
      <line num="542" type="stmt" count="19"/>
      <line num="544" type="stmt" count="19"/>
      <line num="545" type="stmt" count="19"/>
      <line num="548" type="stmt" count="19"/>
      <line num="585" type="method" name="interpretDiff" visibility="public" complexity="18" crap="18.36" count="29"/>
      <line num="587" type="stmt" count="29"/>
      <line num="588" type="stmt" count="29"/>
      <line num="590" type="stmt" count="29"/>
      <line num="591" type="stmt" count="29"/>
      <line num="592" type="stmt" count="29"/>
      <line num="595" type="stmt" count="29"/>
      <line num="597" type="stmt" count="0"/>
      <line num="600" type="stmt" count="29"/>
      <line num="601" type="stmt" count="29"/>
      <line num="605" type="stmt" count="29"/>
      <line num="606" type="stmt" count="29"/>
      <line num="607" type="stmt" count="29"/>
      <line num="610" type="stmt" count="29"/>
      <line num="611" type="stmt" count="29"/>
      <line num="613" type="stmt" count="27"/>
      <line num="614" type="stmt" count="19"/>
      <line num="615" type="stmt" count="19"/>
      <line num="616" type="stmt" count="19"/>
      <line num="617" type="stmt" count="19"/>
      <line num="618" type="stmt" count="19"/>
      <line num="619" type="stmt" count="19"/>
      <line num="620" type="stmt" count="19"/>
      <line num="621" type="stmt" count="11"/>
      <line num="622" type="stmt" count="8"/>
      <line num="623" type="stmt" count="8"/>
      <line num="624" type="stmt" count="8"/>
      <line num="625" type="stmt" count="8"/>
      <line num="626" type="stmt" count="8"/>
      <line num="628" type="stmt" count="3"/>
      <line num="629" type="stmt" count="3"/>
      <line num="630" type="stmt" count="3"/>
      <line num="631" type="stmt" count="3"/>
      <line num="632" type="stmt" count="3"/>
      <line num="633" type="stmt" count="3"/>
      <line num="634" type="stmt" count="3"/>
      <line num="635" type="stmt" count="3"/>
      <line num="636" type="stmt" count="3"/>
      <line num="637" type="stmt" count="1"/>
      <line num="638" type="stmt" count="1"/>
      <line num="639" type="stmt" count="1"/>
      <line num="640" type="stmt" count="1"/>
      <line num="641" type="stmt" count="1"/>
      <line num="643" type="stmt" count="3"/>
      <line num="644" type="stmt" count="3"/>
      <line num="645" type="stmt" count="3"/>
      <line num="646" type="stmt" count="3"/>
      <line num="647" type="stmt" count="3"/>
      <line num="649" type="stmt" count="3"/>
      <line num="650" type="stmt" count="3"/>
      <line num="651" type="stmt" count="3"/>
      <line num="652" type="stmt" count="3"/>
      <line num="656" type="stmt" count="18"/>
      <line num="657" type="stmt" count="0"/>
      <line num="658" type="stmt" count="0"/>
      <line num="659" type="stmt" count="0"/>
      <line num="660" type="stmt" count="0"/>
      <line num="662" type="stmt" count="18"/>
      <line num="663" type="stmt" count="18"/>
      <line num="664" type="stmt" count="18"/>
      <line num="665" type="stmt" count="18"/>
      <line num="667" type="stmt" count="4"/>
      <line num="668" type="stmt" count="1"/>
      <line num="669" type="stmt" count="1"/>
      <line num="670" type="stmt" count="1"/>
      <line num="671" type="stmt" count="1"/>
      <line num="672" type="stmt" count="4"/>
      <line num="673" type="stmt" count="4"/>
      <line num="674" type="stmt" count="4"/>
      <line num="675" type="stmt" count="4"/>
      <line num="676" type="stmt" count="4"/>
      <line num="677" type="stmt" count="4"/>
      <line num="678" type="stmt" count="4"/>
      <line num="679" type="stmt" count="4"/>
      <line num="681" type="stmt" count="4"/>
      <line num="682" type="stmt" count="4"/>
      <line num="683" type="stmt" count="4"/>
      <line num="684" type="stmt" count="4"/>
      <line num="685" type="stmt" count="4"/>
      <line num="686" type="stmt" count="4"/>
      <line num="687" type="stmt" count="1"/>
      <line num="690" type="stmt" count="0"/>
      <line num="691" type="stmt" count="0"/>
      <line num="692" type="stmt" count="0"/>
      <line num="693" type="stmt" count="0"/>
      <line num="697" type="stmt" count="29"/>
      <line num="698" type="stmt" count="28"/>
      <line num="701" type="stmt" count="29"/>
      <line num="711" type="method" name="hasNewSignature" visibility="private" complexity="2" crap="2" count="4"/>
      <line num="712" type="stmt" count="4"/>
      <line num="713" type="stmt" count="4"/>
      <line num="715" type="stmt" count="4"/>
      <line num="725" type="method" name="convertToUnknownSignedChanges" visibility="private" complexity="4" crap="4" count="28"/>
      <line num="726" type="stmt" count="28"/>
      <line num="728" type="stmt" count="28"/>
      <line num="729" type="stmt" count="28"/>
      <line num="731" type="stmt" count="2"/>
      <line num="732" type="stmt" count="2"/>
      <line num="733" type="stmt" count="1"/>
      <line num="735" type="stmt" count="1"/>
      <line num="739" type="stmt" count="28"/>
      <line num="740" type="stmt" count="28"/>
      <line num="748" type="method" name="isInSignedSection" visibility="private" complexity="4" crap="4" count="3"/>
      <line num="749" type="stmt" count="3"/>
      <line num="750" type="stmt" count="3"/>
      <line num="751" type="stmt" count="2"/>
      <line num="755" type="stmt" count="2"/>
      <line num="765" type="method" name="getFullSection" visibility="public" complexity="1" crap="1" count="28"/>
      <line num="766" type="stmt" count="28"/>
      <line num="767" type="stmt" count="28"/>
      <line num="768" type="stmt" count="28"/>
      <line num="770" type="stmt" count="28"/>
      <line num="780" type="method" name="getSectionSpan" visibility="private" complexity="1" crap="1" count="28"/>
      <line num="781" type="stmt" count="28"/>
      <line num="782" type="stmt" count="28"/>
      <line num="783" type="stmt" count="28"/>
      <line num="784" type="stmt" count="28"/>
      <line num="793" type="method" name="getSectionStartIndex" visibility="private" complexity="3" crap="3" count="35"/>
      <line num="794" type="stmt" count="35"/>
      <line num="795" type="stmt" count="35"/>
      <line num="796" type="stmt" count="32"/>
      <line num="800" type="stmt" count="35"/>
      <line num="809" type="method" name="getSectionEndIndex" visibility="private" complexity="3" crap="3" count="35"/>
      <line num="810" type="stmt" count="35"/>
      <line num="811" type="stmt" count="35"/>
      <line num="812" type="stmt" count="30"/>
      <line num="813" type="stmt" count="22"/>
      <line num="817" type="stmt" count="35"/>
      <line num="826" type="method" name="getSectionCount" visibility="public" complexity="1" crap="1" count="36"/>
      <line num="827" type="stmt" count="36"/>
      <line num="829" type="stmt" count="36"/>
      <line num="838" type="method" name="extractHeader" visibility="public" complexity="2" crap="2" count="33"/>
      <line num="839" type="stmt" count="33"/>
      <line num="841" type="stmt" count="33"/>
      <line num="843" type="stmt" count="33"/>
      <line num="844" type="stmt" count="3"/>
      <line num="847" type="stmt" count="30"/>
      <line num="859" type="method" name="extractSections" visibility="private" complexity="5" crap="5" count="9"/>
      <line num="860" type="stmt" count="9"/>
      <line num="862" type="stmt" count="9"/>
      <line num="863" type="stmt" count="1"/>
      <line num="864" type="stmt" count="1"/>
      <line num="865" type="stmt" count="1"/>
      <line num="866" type="stmt" count="1"/>
      <line num="869" type="stmt" count="8"/>
      <line num="870" type="stmt" count="8"/>
      <line num="873" type="stmt" count="8"/>
      <line num="874" type="stmt" count="6"/>
      <line num="875" type="stmt" count="6"/>
      <line num="876" type="stmt" count="6"/>
      <line num="877" type="stmt" count="6"/>
      <line num="879" type="stmt" count="8"/>
      <line num="880" type="stmt" count="8"/>
      <line num="881" type="stmt" count="3"/>
      <line num="883" type="stmt" count="8"/>
      <line num="885" type="stmt" count="8"/>
      <line num="886" type="stmt" count="8"/>
      <line num="887" type="stmt" count="8"/>
      <line num="888" type="stmt" count="8"/>
      <line num="891" type="stmt" count="8"/>
      <line num="901" type="method" name="stripSignature" visibility="private" complexity="2" crap="2" count="23"/>
      <line num="902" type="stmt" count="23"/>
      <line num="903" type="stmt" count="23"/>
      <line num="904" type="stmt" count="3"/>
      <line num="906" type="stmt" count="3"/>
      <line num="914" type="stmt" count="23"/>
      <line num="915" type="stmt" count="23"/>
      <line num="923" type="method" name="stripHeader" visibility="private" complexity="1" crap="1" count="23"/>
      <line num="924" type="stmt" count="23"/>
      <line num="933" type="method" name="getTimestampPosition" visibility="public" complexity="2" crap="2" count="4"/>
      <line num="934" type="stmt" count="4"/>
      <line num="935" type="stmt" count="4"/>
      <line num="936" type="stmt" count="4"/>
      <line num="937" type="stmt" count="4"/>
      <line num="938" type="stmt" count="4"/>
      <line num="939" type="stmt" count="4"/>
      <line num="940" type="stmt" count="4"/>
      <line num="941" type="stmt" count="4"/>
      <line num="942" type="stmt" count="3"/>
      <line num="945" type="stmt" count="1"/>
      <line num="964" type="method" name="getMachineReadableDiff" visibility="public" complexity="2" crap="2.15" count="28"/>
      <line num="965" type="stmt" count="28"/>
      <line num="966" type="stmt" count="0"/>
      <line num="969" type="stmt" count="28"/>
      <line num="980" type="method" name="extractSignatures" visibility="private" complexity="3" crap="3" count="29"/>
      <line num="981" type="stmt" count="29"/>
      <line num="983" type="stmt" count="29"/>
      <line num="985" type="stmt" count="29"/>
      <line num="987" type="stmt" count="29"/>
      <line num="988" type="stmt" count="29"/>
      <line num="989" type="stmt" count="21"/>
      <line num="992" type="stmt" count="28"/>
      <line num="994" type="stmt" count="28"/>
      <line num="995" type="stmt" count="28"/>
      <line num="998" type="stmt" count="29"/>
      <line num="1008" type="method" name="extractUsersFromLine" visibility="public" complexity="9" crap="9" count="44"/>
      <line num="1015" type="stmt" count="44"/>
      <line num="1016" type="stmt" count="21"/>
      <line num="1019" type="stmt" count="43"/>
      <line num="1021" type="stmt" count="43"/>
      <line num="1023" type="stmt" count="43"/>
      <line num="1032" type="stmt" count="43"/>
      <line num="1033" type="stmt" count="43"/>
      <line num="1037" type="stmt" count="43"/>
      <line num="1038" type="stmt" count="43"/>
      <line num="1039" type="stmt" count="43"/>
      <line num="1041" type="stmt" count="42"/>
      <line num="1042" type="stmt" count="8"/>
      <line num="1043" type="stmt" count="1"/>
      <line num="1044" type="stmt" count="1"/>
      <line num="1048" type="stmt" count="43"/>
      <line num="1061" type="method" name="getUserFromLine" visibility="public" complexity="6" crap="6" count="44"/>
      <line num="1062" type="stmt" count="44"/>
      <line num="1063" type="stmt" count="44"/>
      <line num="1064" type="stmt" count="44"/>
      <line num="1072" type="stmt" count="44"/>
      <line num="1073" type="stmt" count="44"/>
      <line num="1074" type="stmt" count="44"/>
      <line num="1077" type="stmt" count="43"/>
      <line num="1078" type="stmt" count="2"/>
      <line num="1080" type="stmt" count="41"/>
      <line num="1081" type="stmt" count="41"/>
      <line num="1083" type="stmt" count="2"/>
      <line num="1086" type="stmt" count="42"/>
      <line num="1087" type="stmt" count="42"/>
      <line num="1088" type="stmt" count="42"/>
      <line num="1089" type="stmt" count="42"/>
      <line num="1090" type="stmt" count="42"/>
      <line num="1091" type="stmt" count="42"/>
      <line num="1094" type="stmt" count="42"/>
      <line num="1095" type="stmt" count="42"/>
      <line num="1096" type="stmt" count="40"/>
      <line num="1102" type="stmt" count="24"/>
      <line num="1115" type="method" name="getLinkFromLine" visibility="private" complexity="5" crap="30" count="0"/>
      <line num="1116" type="stmt" count="0"/>
      <line num="1119" type="stmt" count="0"/>
      <line num="1120" type="stmt" count="0"/>
      <line num="1124" type="stmt" count="0"/>
      <line num="1125" type="stmt" count="0"/>
      <line num="1128" type="stmt" count="0"/>
      <line num="1130" type="stmt" count="0"/>
      <line num="1131" type="stmt" count="0"/>
      <line num="1134" type="stmt" count="0"/>
      <line num="1136" type="stmt" count="0"/>
      <line num="1138" type="stmt" count="0"/>
      <line num="1140" type="stmt" count="0"/>
      <line num="1152" type="method" name="extractUserFromLink" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="1153" type="stmt" count="0"/>
      <line num="1155" type="stmt" count="0"/>
      <line num="1156" type="stmt" count="0"/>
      <line num="1157" type="stmt" count="0"/>
      <line num="1158" type="stmt" count="0"/>
      <line num="1159" type="stmt" count="0"/>
      <line num="1160" type="stmt" count="0"/>
      <line num="1162" type="stmt" count="0"/>
      <line num="1165" type="stmt" count="0"/>
      <line num="1166" type="stmt" count="0"/>
      <line num="1168" type="stmt" count="0"/>
      <line num="1169" type="stmt" count="0"/>
      <line num="1172" type="stmt" count="0"/>
      <line num="1175" type="stmt" count="0"/>
      <line num="1184" type="method" name="getTimestampRegex" visibility="public" complexity="6" crap="6.03" count="6"/>
      <line num="1185" type="stmt" count="6"/>
      <line num="1186" type="stmt" count="0"/>
      <line num="1190" type="stmt" count="6"/>
      <line num="1191" type="stmt" count="6"/>
      <line num="1192" type="stmt" count="6"/>
      <line num="1194" type="stmt" count="6"/>
      <line num="1195" type="stmt" count="6"/>
      <line num="1196" type="stmt" count="6"/>
      <line num="1200" type="stmt" count="6"/>
      <line num="1201" type="stmt" count="6"/>
      <line num="1202" type="stmt" count="6"/>
      <line num="1203" type="stmt" count="6"/>
      <line num="1204" type="stmt" count="6"/>
      <line num="1206" type="stmt" count="6"/>
      <line num="1207" type="stmt" count="6"/>
      <line num="1208" type="stmt" count="6"/>
      <line num="1210" type="stmt" count="6"/>
      <line num="1211" type="stmt" count="6"/>
      <line num="1214" type="stmt" count="6"/>
      <line num="1215" type="stmt" count="0"/>
      <line num="1218" type="stmt" count="6"/>
      <line num="1220" type="stmt" count="6"/>
      <line num="1232" type="method" name="getTextSnippet" visibility="public" complexity="1" crap="1" count="9"/>
      <line num="1235" type="stmt" count="9"/>
      <line num="1237" type="stmt" count="9"/>
      <line num="1238" type="stmt" count="9"/>
      <line num="1239" type="stmt" count="9"/>
      <line num="1240" type="stmt" count="9"/>
      <line num="1250" type="method" name="getTextSnippetFromSummary" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="1252" type="stmt" count="0"/>
      <line num="1253" type="stmt" count="0"/>
      <line num="1254" type="stmt" count="0"/>
      <line num="1255" type="stmt" count="0"/>
      <line num="1266" type="method" name="getEditExcerpt" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="1269" type="stmt" count="0"/>
      <line num="1270" type="stmt" count="0"/>
      <line num="1271" type="stmt" count="0"/>
      <line num="1275" type="stmt" count="0"/>
      <metrics loc="1276" ncloc="928" classes="1" methods="33" coveredmethods="22" conditionals="0" coveredconditionals="0" statements="564" coveredstatements="488" elements="597" coveredelements="510"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/EchoNotificationHandler.php">
      <class name="MediaWiki\Extension\Notifications\EchoNotificationHandler" namespace="global">
        <metrics complexity="5" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="9" elements="12" coveredelements="9"/>
      </class>
      <line num="16" type="method" name="notify" visibility="public" complexity="5" crap="5.15" count="1"/>
      <line num="20" type="stmt" count="1"/>
      <line num="21" type="stmt" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="0"/>
      <line num="26" type="stmt" count="1"/>
      <line num="27" type="stmt" count="0"/>
      <line num="31" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <metrics loc="42" ncloc="39" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="9" elements="12" coveredelements="9"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/EmailBatch.php">
      <class name="MediaWiki\Extension\Notifications\EmailBatch" namespace="global">
        <metrics complexity="34" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="167" coveredstatements="0" elements="177" coveredelements="0"/>
      </class>
      <line num="49" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="78" type="method" name="newFromUserId" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="126" type="method" name="process" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="166" type="method" name="setLastEvent" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="187" type="method" name="updateUserLastBatchTimestamp" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="201" type="method" name="getEvents" visibility="protected" complexity="6" crap="42" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="218" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="222" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="263" type="method" name="clearProcessedEvent" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="267" type="stmt" count="0"/>
      <line num="268" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="275" type="stmt" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="280" type="stmt" count="0"/>
      <line num="281" type="stmt" count="0"/>
      <line num="282" type="stmt" count="0"/>
      <line num="284" type="stmt" count="0"/>
      <line num="285" type="stmt" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="288" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="295" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="305" type="method" name="sendEmail" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="308" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="318" type="stmt" count="0"/>
      <line num="319" type="stmt" count="0"/>
      <line num="321" type="stmt" count="0"/>
      <line num="323" type="stmt" count="0"/>
      <line num="326" type="stmt" count="0"/>
      <line num="327" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="329" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="332" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="334" type="stmt" count="0"/>
      <line num="335" type="stmt" count="0"/>
      <line num="336" type="stmt" count="0"/>
      <line num="337" type="stmt" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="341" type="stmt" count="0"/>
      <line num="342" type="stmt" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="356" type="method" name="addToQueue" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="357" type="stmt" count="0"/>
      <line num="358" type="stmt" count="0"/>
      <line num="361" type="stmt" count="0"/>
      <line num="362" type="stmt" count="0"/>
      <line num="364" type="stmt" count="0"/>
      <line num="365" type="stmt" count="0"/>
      <line num="366" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="369" type="stmt" count="0"/>
      <line num="371" type="stmt" count="0"/>
      <line num="372" type="stmt" count="0"/>
      <line num="373" type="stmt" count="0"/>
      <line num="374" type="stmt" count="0"/>
      <line num="375" type="stmt" count="0"/>
      <line num="376" type="stmt" count="0"/>
      <line num="387" type="method" name="getUsersToNotify" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="390" type="stmt" count="0"/>
      <line num="391" type="stmt" count="0"/>
      <line num="392" type="stmt" count="0"/>
      <line num="393" type="stmt" count="0"/>
      <line num="394" type="stmt" count="0"/>
      <line num="395" type="stmt" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="397" type="stmt" count="0"/>
      <metrics loc="400" ncloc="300" classes="1" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="167" coveredstatements="0" elements="177" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/EmailFormat.php">
      <class name="MediaWiki\Extension\Notifications\EmailFormat" namespace="global">
        <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="9" ncloc="9" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/EmailFrequency.php">
      <class name="MediaWiki\Extension\Notifications\EmailFrequency" namespace="global">
        <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="26" ncloc="14" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ForeignNotifications.php">
      <class name="MediaWiki\Extension\Notifications\ForeignNotifications" namespace="global">
        <metrics complexity="37" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="87" coveredstatements="0" elements="96" coveredelements="0"/>
      </class>
      <line num="52" type="method" name="__construct" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="63" type="method" name="isEnabledByUser" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="72" type="method" name="getCount" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="88" type="method" name="getTimestamp" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="112" type="method" name="getWikis" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="132" type="method" name="getWikiTimestamp" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="151" type="method" name="populate" visibility="protected" complexity="11" crap="132" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="206" type="method" name="getApiEndpoints" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="236" type="method" name="getWikiTitle" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="257" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <metrics loc="265" ncloc="186" classes="1" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="87" coveredstatements="0" elements="96" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ForeignWikiRequest.php">
      <class name="MediaWiki\Extension\Notifications\ForeignWikiRequest" namespace="global">
        <metrics complexity="29" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="104" coveredstatements="0" elements="113" coveredelements="0"/>
      </class>
      <line num="33" type="method" name="__construct" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="50" type="method" name="execute" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="69" type="method" name="getCentralId" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="method" name="canUseCentralAuth" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="90" type="method" name="getCentralAuthToken" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="106" type="method" name="getCsrfToken" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="146" type="method" name="getRequestParams" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="181" type="method" name="getQueryParams" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="210" type="method" name="doRequests" visibility="protected" complexity="6" crap="42" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="218" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <metrics loc="242" ncloc="186" classes="1" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="104" coveredstatements="0" elements="113" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoArticleReminderPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoArticleReminderPresentationModel" namespace="global">
        <metrics complexity="4" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="13" coveredelements="0"/>
      </class>
      <line num="14" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="19" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="24" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="31" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <metrics loc="38" ncloc="27" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="13" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEditThresholdPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEditThresholdPresentationModel" namespace="global">
        <metrics complexity="5" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="18" coveredelements="0"/>
      </class>
      <line num="8" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="9" type="stmt" count="0"/>
      <line num="13" type="method" name="getHeaderMessageKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="27" type="method" name="getPrimaryLink" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <metrics loc="48" ncloc="36" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="18" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEditUserPagePresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEditUserPagePresentationModel" namespace="global">
        <metrics complexity="16" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="0" elements="49" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="11" type="stmt" count="0"/>
      <line num="15" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="20" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="28" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="37" type="method" name="getHeaderMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="54" type="method" name="getCompactHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="61" type="method" name="getBodyMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="method" name="getDiffLinkUrl" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="method" name="getRevBeforeFirstNotification" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="90" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <metrics loc="94" ncloc="85" classes="1" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="0" elements="49" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEditUserTalkPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEditUserTalkPresentationModel" namespace="global">
        <metrics complexity="22" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="61" coveredstatements="0" elements="72" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="24" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="29" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="34" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="43" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="60" type="method" name="getHeaderMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="83" type="method" name="getCompactHeaderMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="97" type="method" name="getBodyMessage" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="109" type="method" name="getDiffLinkUrl" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="119" type="method" name="getRevBeforeFirstNotification" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="129" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <metrics loc="133" ncloc="118" classes="1" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="61" coveredstatements="0" elements="72" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEditedOtherUsersJsPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEditedOtherUsersJsPresentationModel" namespace="global">
        <metrics complexity="6" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="21" coveredelements="0"/>
      </class>
      <line num="8" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="9" type="stmt" count="0"/>
      <line num="13" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="18" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="25" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="30" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="42" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <metrics loc="46" ncloc="40" classes="1" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="0" elements="21" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEmailUserPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEmailUserPresentationModel" namespace="global">
        <metrics complexity="5" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="0" elements="9" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="11" type="stmt" count="0"/>
      <line num="15" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="20" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="25" type="method" name="getBodyMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <metrics loc="30" ncloc="26" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="5" coveredstatements="0" elements="9" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEventDigestFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEventDigestFormatter" namespace="global">
        <metrics complexity="6" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="0" elements="13" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="32" type="method" name="msg" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="44" type="method" name="format" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <metrics loc="62" ncloc="39" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="10" coveredstatements="0" elements="13" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEventFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEventFormatter" namespace="global">
        <metrics complexity="6" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="21" coveredelements="0"/>
      </class>
      <line num="24" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="38" type="method" name="msg" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="50" type="method" name="format" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <metrics loc="81" ncloc="51" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="21" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoEventPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoEventPresentationModel" namespace="global">
        <metrics complexity="72" methods="38" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="191" coveredstatements="0" elements="229" coveredelements="0"/>
      </class>
      <line num="68" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="84" type="method" name="supportsPresentationModel" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="97" type="method" name="factory" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="116" type="method" name="getType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="125" type="method" name="getUser" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="134" type="method" name="getCategory" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="141" type="method" name="getDistributionType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="154" type="method" name="msg" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="171" type="method" name="getBundledEvents" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="180" type="method" name="getBundledIds" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="196" type="method" name="isBundled" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="214" type="method" name="getBundleCount" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="242" type="method" name="getNotificationCountForOutput" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="255" type="method" name="getTimestamp" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="265" type="method" name="userCan" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="281" type="method" name="getAgentForOutput" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="282" type="stmt" count="0"/>
      <line num="283" type="stmt" count="0"/>
      <line num="284" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="295" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="308" type="method" name="getMessageWithAgent" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="310" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="320" type="method" name="getViewingUserForGender" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="321" type="stmt" count="0"/>
      <line num="330" type="method" name="getAgentLink" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="342" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="349" type="method" name="getHeaderMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="350" type="stmt" count="0"/>
      <line num="360" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="361" type="stmt" count="0"/>
      <line num="367" type="method" name="getCompactHeaderMessageKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="382" type="method" name="getCompactHeaderMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="395" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="412" type="method" name="getSubjectMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="413" type="stmt" count="0"/>
      <line num="414" type="stmt" count="0"/>
      <line num="415" type="stmt" count="0"/>
      <line num="417" type="stmt" count="0"/>
      <line num="420" type="stmt" count="0"/>
      <line num="428" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="429" type="stmt" count="0"/>
      <line num="450" type="method" name="getPrimaryLinkWithMarkAsRead" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="455" type="stmt" count="0"/>
      <line num="456" type="stmt" count="0"/>
      <line num="459" type="stmt" count="0"/>
      <line num="460" type="stmt" count="0"/>
      <line num="461" type="stmt" count="0"/>
      <line num="464" type="stmt" count="0"/>
      <line num="466" type="stmt" count="0"/>
      <line num="472" type="method" name="getRevisionCommentMessage" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="473" type="stmt" count="0"/>
      <line num="474" type="stmt" count="0"/>
      <line num="476" type="stmt" count="0"/>
      <line num="477" type="stmt" count="0"/>
      <line num="478" type="stmt" count="0"/>
      <line num="480" type="stmt" count="0"/>
      <line num="482" type="stmt" count="0"/>
      <line num="526" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="527" type="stmt" count="0"/>
      <line num="534" type="method" name="getEventId" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="535" type="stmt" count="0"/>
      <line num="542" type="method" name="jsonSerialize" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="543" type="stmt" count="0"/>
      <line num="545" type="stmt" count="0"/>
      <line num="546" type="stmt" count="0"/>
      <line num="547" type="stmt" count="0"/>
      <line num="548" type="stmt" count="0"/>
      <line num="549" type="stmt" count="0"/>
      <line num="550" type="stmt" count="0"/>
      <line num="551" type="stmt" count="0"/>
      <line num="552" type="stmt" count="0"/>
      <line num="553" type="stmt" count="0"/>
      <line num="554" type="stmt" count="0"/>
      <line num="561" type="method" name="getTruncatedUsername" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="562" type="stmt" count="0"/>
      <line num="563" type="stmt" count="0"/>
      <line num="571" type="method" name="getTruncatedTitleText" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="572" type="stmt" count="0"/>
      <line num="573" type="stmt" count="0"/>
      <line num="574" type="stmt" count="0"/>
      <line num="581" type="method" name="getUserLink" visibility="protected" complexity="6" crap="42" count="0"/>
      <line num="582" type="stmt" count="0"/>
      <line num="583" type="stmt" count="0"/>
      <line num="586" type="stmt" count="0"/>
      <line num="587" type="stmt" count="0"/>
      <line num="590" type="stmt" count="0"/>
      <line num="591" type="stmt" count="0"/>
      <line num="592" type="stmt" count="0"/>
      <line num="594" type="stmt" count="0"/>
      <line num="595" type="stmt" count="0"/>
      <line num="596" type="stmt" count="0"/>
      <line num="597" type="stmt" count="0"/>
      <line num="599" type="stmt" count="0"/>
      <line num="600" type="stmt" count="0"/>
      <line num="601" type="stmt" count="0"/>
      <line num="602" type="stmt" count="0"/>
      <line num="603" type="stmt" count="0"/>
      <line num="604" type="stmt" count="0"/>
      <line num="605" type="stmt" count="0"/>
      <line num="606" type="stmt" count="0"/>
      <line num="616" type="method" name="getPageLink" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="617" type="stmt" count="0"/>
      <line num="618" type="stmt" count="0"/>
      <line num="619" type="stmt" count="0"/>
      <line num="620" type="stmt" count="0"/>
      <line num="622" type="stmt" count="0"/>
      <line num="625" type="stmt" count="0"/>
      <line num="626" type="stmt" count="0"/>
      <line num="627" type="stmt" count="0"/>
      <line num="628" type="stmt" count="0"/>
      <line num="629" type="stmt" count="0"/>
      <line num="630" type="stmt" count="0"/>
      <line num="631" type="stmt" count="0"/>
      <line num="632" type="stmt" count="0"/>
      <line num="633" type="stmt" count="0"/>
      <line num="634" type="stmt" count="0"/>
      <line num="635" type="stmt" count="0"/>
      <line num="650" type="method" name="getDynamicActionLink" visibility="protected" complexity="6" crap="42" count="0"/>
      <line num="658" type="stmt" count="0"/>
      <line num="659" type="stmt" count="0"/>
      <line num="660" type="stmt" count="0"/>
      <line num="661" type="stmt" count="0"/>
      <line num="662" type="stmt" count="0"/>
      <line num="663" type="stmt" count="0"/>
      <line num="666" type="stmt" count="0"/>
      <line num="667" type="stmt" count="0"/>
      <line num="668" type="stmt" count="0"/>
      <line num="669" type="stmt" count="0"/>
      <line num="670" type="stmt" count="0"/>
      <line num="671" type="stmt" count="0"/>
      <line num="672" type="stmt" count="0"/>
      <line num="673" type="stmt" count="0"/>
      <line num="682" type="method" name="getWatchActionLink" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="683" type="stmt" count="0"/>
      <line num="684" type="stmt" count="0"/>
      <line num="685" type="stmt" count="0"/>
      <line num="687" type="stmt" count="0"/>
      <line num="688" type="stmt" count="0"/>
      <line num="689" type="stmt" count="0"/>
      <line num="690" type="stmt" count="0"/>
      <line num="691" type="stmt" count="0"/>
      <line num="692" type="stmt" count="0"/>
      <line num="693" type="stmt" count="0"/>
      <line num="694" type="stmt" count="0"/>
      <line num="697" type="stmt" count="0"/>
      <line num="698" type="stmt" count="0"/>
      <line num="699" type="stmt" count="0"/>
      <line num="700" type="stmt" count="0"/>
      <line num="701" type="stmt" count="0"/>
      <line num="702" type="stmt" count="0"/>
      <line num="703" type="stmt" count="0"/>
      <line num="706" type="stmt" count="0"/>
      <line num="707" type="stmt" count="0"/>
      <line num="708" type="stmt" count="0"/>
      <line num="709" type="stmt" count="0"/>
      <line num="710" type="stmt" count="0"/>
      <line num="711" type="stmt" count="0"/>
      <line num="712" type="stmt" count="0"/>
      <line num="713" type="stmt" count="0"/>
      <line num="714" type="stmt" count="0"/>
      <line num="715" type="stmt" count="0"/>
      <line num="718" type="stmt" count="0"/>
      <line num="719" type="stmt" count="0"/>
      <line num="722" type="stmt" count="0"/>
      <line num="723" type="stmt" count="0"/>
      <line num="729" type="stmt" count="0"/>
      <line num="732" type="stmt" count="0"/>
      <line num="733" type="stmt" count="0"/>
      <line num="734" type="stmt" count="0"/>
      <line num="735" type="stmt" count="0"/>
      <line num="736" type="stmt" count="0"/>
      <line num="737" type="stmt" count="0"/>
      <line num="738" type="stmt" count="0"/>
      <line num="739" type="stmt" count="0"/>
      <line num="740" type="stmt" count="0"/>
      <line num="741" type="stmt" count="0"/>
      <line num="745" type="stmt" count="0"/>
      <metrics loc="746" ncloc="408" classes="1" methods="38" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="192" coveredstatements="0" elements="230" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoFlyoutFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoFlyoutFormatter" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="48" coveredstatements="0" elements="50" coveredelements="0"/>
      </class>
      <line num="17" type="method" name="formatModel" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="74" type="method" name="getIconUrl" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <metrics loc="82" ncloc="73" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="48" coveredstatements="0" elements="50" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoForeignPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoForeignPresentationModel" namespace="global">
        <metrics complexity="8" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="0" elements="28" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="11" type="stmt" count="0"/>
      <line num="15" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="20" type="method" name="getHeaderMessageKey" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="31" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="56" type="method" name="getWikiNames" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <metrics loc="65" ncloc="53" classes="1" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="22" coveredstatements="0" elements="28" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoHtmlDigestEmailFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoHtmlDigestEmailFormatter" namespace="global">
        <metrics complexity="12" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="78" coveredstatements="0" elements="87" coveredelements="0"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="38" type="method" name="formatModels" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="72" type="method" name="renderBody" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="158" type="method" name="getCategoryTitle" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="168" type="method" name="groupByCategory" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="181" type="method" name="applyStyleToCategory" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="197" type="method" name="applyStyleToEvent" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="220" type="method" name="renderDigestList" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="236" type="method" name="renderAction" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <metrics loc="249" ncloc="211" classes="1" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="78" coveredstatements="0" elements="87" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoHtmlEmailFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoHtmlEmailFormatter" namespace="global">
        <metrics complexity="9" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="76" coveredstatements="0" elements="80" coveredelements="0"/>
      </class>
      <line num="32" type="method" name="formatModel" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="method" name="renderBody" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="161" type="method" name="getFooter" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="165" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="186" type="method" name="renderLink" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <metrics loc="197" ncloc="191" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="76" coveredstatements="0" elements="80" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoIcon.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoIcon" namespace="global">
        <metrics complexity="14" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="0" elements="36" coveredelements="0"/>
      </class>
      <line num="15" type="method" name="getUrl" visibility="public" complexity="9" crap="90" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="61" type="method" name="getRasterizedUrl" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <metrics loc="92" ncloc="71" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="0" elements="36" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoManualPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoManualPresentationModel" namespace="global">
        <metrics complexity="8" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="24" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="11" type="stmt" count="0"/>
      <line num="15" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="21" type="method" name="getSubjectMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="26" type="method" name="getPrimaryLink" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="37" type="method" name="getBodyMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <metrics loc="54" ncloc="47" classes="1" methods="6" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="24" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoMentionInSummaryPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoMentionInSummaryPresentationModel" namespace="global">
        <metrics complexity="8" methods="8" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="25" coveredelements="0"/>
      </class>
      <line num="8" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="9" type="stmt" count="0"/>
      <line num="13" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="18" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="27" type="method" name="getBodyMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="32" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="40" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="49" type="method" name="getDiffURL" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <metrics loc="56" ncloc="49" classes="1" methods="8" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="25" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoMentionPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoMentionPresentationModel" namespace="global">
        <metrics complexity="26" methods="12" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="67" coveredstatements="0" elements="79" coveredelements="0"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="26" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="31" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="36" type="method" name="getHeaderMessageKey" visibility="protected" complexity="8" crap="72" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="58" type="method" name="getHeaderMessage" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="85" type="method" name="getBodyMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="104" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="113" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="129" type="method" name="onArticleTalkpage" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="133" type="method" name="onAgentTalkpage" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="137" type="method" name="onUserTalkpage" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="143" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <metrics loc="147" ncloc="131" classes="1" methods="12" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="67" coveredstatements="0" elements="79" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoMentionStatusPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoMentionStatusPresentationModel" namespace="global">
        <metrics complexity="26" methods="15" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="65" coveredstatements="0" elements="80" coveredelements="0"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="29" type="method" name="getIconType" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="40" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="getHeaderMessage" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="88" type="method" name="getCompactHeaderMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="102" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="113" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="127" type="method" name="isMentionSuccessEvent" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="131" type="method" name="isMentionSuccess" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="135" type="method" name="getSubjectName" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="139" type="method" name="getFailureType" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="143" type="method" name="isTooManyMentionsFailure" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="148" type="method" name="getMaxMentions" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="153" type="method" name="getBundleSuccessCount" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="158" type="method" name="isMixedBundle" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <metrics loc="164" ncloc="141" classes="1" methods="15" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="65" coveredstatements="0" elements="80" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoModelFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoModelFormatter" namespace="global">
        <metrics complexity="4" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="0" elements="13" coveredelements="0"/>
      </class>
      <line num="13" type="method" name="formatModel" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <metrics loc="36" ncloc="32" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="0" elements="13" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoPageLinkedPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoPageLinkedPresentationModel" namespace="global">
        <metrics complexity="24" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="92" coveredstatements="0" elements="103" coveredelements="0"/>
      </class>
      <line num="17" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="28" type="method" name="canRender" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="35" type="method" name="getPrimaryLink" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="55" type="method" name="getSecondaryLinks" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="71" type="method" name="getMuteLink" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="125" type="method" name="getHeaderMessageKey" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="133" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="144" type="method" name="getCompactHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="155" type="method" name="getLinkedPageId" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="167" type="stmt" count="0"/>
      <line num="173" type="method" name="getPageFrom" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="181" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <metrics loc="185" ncloc="152" classes="1" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="92" coveredstatements="0" elements="103" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoPlainTextDigestEmailFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoPlainTextDigestEmailFormatter" namespace="global">
        <metrics complexity="6" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="32" coveredstatements="0" elements="35" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="36" type="method" name="formatModels" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="88" type="method" name="getCategoryTitle" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <metrics loc="94" ncloc="73" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="32" coveredstatements="0" elements="35" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoPlainTextEmailFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoPlainTextEmailFormatter" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="0" elements="29" coveredelements="0"/>
      </class>
      <line num="11" type="method" name="formatModel" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="12" type="stmt" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="50" type="method" name="getFooter" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <metrics loc="65" ncloc="60" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="27" coveredstatements="0" elements="29" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoPresentationModelSection.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoPresentationModelSection" namespace="global">
        <metrics complexity="13" methods="6" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="41" coveredstatements="34" elements="47" coveredelements="37"/>
      </class>
      <line num="29" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="34" type="stmt" count="5"/>
      <line num="40" type="method" name="getRawSectionTitle" visibility="protected" complexity="4" crap="4.32" count="5"/>
      <line num="41" type="stmt" count="5"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="5"/>
      <line num="45" type="stmt" count="5"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="50" type="stmt" count="4"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="55" type="stmt" count="4"/>
      <line num="56" type="stmt" count="4"/>
      <line num="63" type="method" name="getParsedSectionTitle" visibility="protected" complexity="3" crap="3.09" count="3"/>
      <line num="64" type="stmt" count="3"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="3"/>
      <line num="68" type="stmt" count="3"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="72" type="stmt" count="3"/>
      <line num="73" type="stmt" count="3"/>
      <line num="74" type="stmt" count="3"/>
      <line num="75" type="stmt" count="3"/>
      <line num="76" type="stmt" count="3"/>
      <line num="79" type="stmt" count="3"/>
      <line num="80" type="stmt" count="3"/>
      <line num="81" type="stmt" count="3"/>
      <line num="92" type="method" name="exists" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="100" type="method" name="getTitleWithSection" visibility="public" complexity="3" crap="3.02" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="0"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="118" type="method" name="getTruncatedSectionTitle" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="119" type="stmt" count="2"/>
      <line num="120" type="stmt" count="2"/>
      <line num="121" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <metrics loc="127" ncloc="90" classes="1" methods="6" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="41" coveredstatements="34" elements="47" coveredelements="37"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoRevertedPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoRevertedPresentationModel" namespace="global">
        <metrics complexity="20" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="44" coveredstatements="0" elements="55" coveredelements="0"/>
      </class>
      <line num="12" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="13" type="stmt" count="0"/>
      <line num="17" type="method" name="canRender" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="22" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="31" type="method" name="getBodyMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="49" type="method" name="formatSummary" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="57" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="69" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="87" type="method" name="getNumberOfEdits" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="100" type="method" name="isAutomaticSummary" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="113" type="method" name="getSubjectMessageKey" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="118" type="method" name="getSubjectMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <metrics loc="122" ncloc="100" classes="1" methods="11" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="44" coveredstatements="0" elements="55" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoSimpleMessagePresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoSimpleMessagePresentationModel" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="3" coveredstatements="0" elements="6" coveredelements="0"/>
      </class>
      <line num="8" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="9" type="stmt" count="0"/>
      <line num="13" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="18" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <metrics loc="23" ncloc="20" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="3" coveredstatements="0" elements="6" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoUserBlockStatusPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoUserBlockStatusPresentationModel" namespace="global">
        <metrics complexity="24" methods="7" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="66" elements="73" coveredelements="73"/>
      </class>
      <line num="12" type="method" name="getIconType" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="13" type="stmt" count="1"/>
      <line num="19" type="method" name="getHeaderMessage" visibility="public" complexity="6" crap="6" count="5"/>
      <line num="20" type="stmt" count="5"/>
      <line num="21" type="stmt" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="25" type="stmt" count="4"/>
      <line num="26" type="stmt" count="4"/>
      <line num="28" type="stmt" count="4"/>
      <line num="29" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="33" type="stmt" count="3"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="38" type="stmt" count="2"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="50" type="method" name="getBodyMessage" visibility="public" complexity="6" crap="6" count="4"/>
      <line num="51" type="stmt" count="4"/>
      <line num="52" type="stmt" count="1"/>
      <line num="55" type="stmt" count="3"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="2"/>
      <line num="59" type="stmt" count="3"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="64" type="stmt" count="2"/>
      <line num="65" type="stmt" count="2"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="71" type="stmt" count="1"/>
      <line num="72" type="stmt" count="1"/>
      <line num="78" type="method" name="getPrimaryLink" visibility="public" complexity="3" crap="3" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="1"/>
      <line num="83" type="stmt" count="3"/>
      <line num="84" type="stmt" count="3"/>
      <line num="85" type="stmt" count="1"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="99" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="100" type="stmt" count="3"/>
      <line num="102" type="stmt" count="3"/>
      <line num="103" type="stmt" count="3"/>
      <line num="104" type="stmt" count="1"/>
      <line num="107" type="stmt" count="3"/>
      <line num="109" type="stmt" count="3"/>
      <line num="112" type="method" name="getTargetUserName" visibility="private" complexity="4" crap="4" count="3"/>
      <line num="113" type="stmt" count="3"/>
      <line num="114" type="stmt" count="3"/>
      <line num="115" type="stmt" count="1"/>
      <line num="118" type="stmt" count="2"/>
      <line num="119" type="stmt" count="2"/>
      <line num="122" type="method" name="getBlockLogLink" visibility="private" complexity="2" crap="2" count="5"/>
      <line num="123" type="stmt" count="5"/>
      <line num="124" type="stmt" count="5"/>
      <line num="125" type="stmt" count="5"/>
      <line num="127" type="stmt" count="5"/>
      <line num="128" type="stmt" count="5"/>
      <line num="129" type="stmt" count="1"/>
      <line num="132" type="stmt" count="5"/>
      <line num="133" type="stmt" count="5"/>
      <line num="134" type="stmt" count="5"/>
      <line num="135" type="stmt" count="5"/>
      <line num="136" type="stmt" count="5"/>
      <line num="137" type="stmt" count="5"/>
      <metrics loc="140" ncloc="125" classes="1" methods="7" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="66" coveredstatements="66" elements="73" coveredelements="73"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoUserRightsPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoUserRightsPresentationModel" namespace="global">
        <metrics complexity="25" methods="10" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="101" coveredstatements="64" elements="111" coveredelements="70"/>
      </class>
      <line num="17" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="21" type="method" name="isAutomaticExpiryEvent" visibility="private" complexity="1" crap="1" count="4"/>
      <line num="23" type="stmt" count="4"/>
      <line num="27" type="method" name="getHeaderMessage" visibility="public" complexity="7" crap="11.30" count="2"/>
      <line num="29" type="stmt" count="2"/>
      <line num="30" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="85" type="method" name="getHeaderMessageForExpiration" visibility="private" complexity="2" crap="2" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="89" type="stmt" count="1"/>
      <line num="90" type="stmt" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="98" type="stmt" count="1"/>
      <line num="99" type="stmt" count="1"/>
      <line num="100" type="stmt" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="106" type="method" name="getBodyMessage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="120" type="method" name="getLocalizedGroupNames" visibility="private" complexity="1" crap="1" count="2"/>
      <line num="121" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="123" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="128" type="method" name="getPrimaryLink" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="145" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="146" type="stmt" count="2"/>
      <line num="147" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="153" type="method" name="getLogLink" visibility="private" complexity="2" crap="2" count="2"/>
      <line num="154" type="stmt" count="2"/>
      <line num="156" type="stmt" count="2"/>
      <line num="157" type="stmt" count="2"/>
      <line num="158" type="stmt" count="2"/>
      <line num="159" type="stmt" count="2"/>
      <line num="160" type="stmt" count="2"/>
      <line num="161" type="stmt" count="2"/>
      <line num="162" type="stmt" count="1"/>
      <line num="164" type="stmt" count="2"/>
      <line num="165" type="stmt" count="2"/>
      <line num="166" type="stmt" count="2"/>
      <line num="167" type="stmt" count="2"/>
      <line num="168" type="stmt" count="2"/>
      <line num="169" type="stmt" count="2"/>
      <line num="170" type="stmt" count="2"/>
      <line num="174" type="method" name="getSubjectMessageKey" visibility="protected" complexity="2" crap="2" count="2"/>
      <line num="175" type="stmt" count="2"/>
      <line num="176" type="stmt" count="1"/>
      <line num="177" type="stmt" count="2"/>
      <metrics loc="180" ncloc="159" classes="1" methods="10" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="101" coveredstatements="64" elements="111" coveredelements="70"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoVerifyEmailReminderPresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoVerifyEmailReminderPresentationModel" namespace="global">
        <metrics complexity="8" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="39" elements="45" coveredelements="45"/>
      </class>
      <line num="14" type="method" name="canRender" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="17" type="stmt" count="2"/>
      <line num="21" type="method" name="getIconType" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="22" type="stmt" count="2"/>
      <line num="26" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="27" type="stmt" count="2"/>
      <line num="28" type="stmt" count="2"/>
      <line num="32" type="method" name="getSubjectMessage" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="34" type="stmt" count="2"/>
      <line num="38" type="method" name="getSecondaryLinks" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="39" type="stmt" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="49" type="stmt" count="1"/>
      <line num="50" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="2"/>
      <line num="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="2"/>
      <line num="60" type="stmt" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="2"/>
      <line num="63" type="stmt" count="2"/>
      <line num="64" type="stmt" count="2"/>
      <line num="65" type="stmt" count="2"/>
      <line num="69" type="method" name="getPrimaryLink" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="72" type="stmt" count="1"/>
      <line num="73" type="stmt" count="1"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="76" type="stmt" count="1"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="80" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <metrics loc="84" ncloc="68" classes="1" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="39" elements="45" coveredelements="45"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoWatchlistChangePresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoWatchlistChangePresentationModel" namespace="global">
        <metrics complexity="26" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="76" coveredstatements="0" elements="85" coveredelements="0"/>
      </class>
      <line num="12" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="13" type="stmt" count="0"/>
      <line num="17" type="method" name="getHeaderMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="getPrimaryLink" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="60" type="method" name="getSecondaryLinks" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="81" type="method" name="getBodyMessage" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="88" type="method" name="isMultiUserBundle" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="97" type="method" name="isMultiTypeBundle" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="106" type="method" name="getViewChangesUrl" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="127" type="method" name="getEventTitle" visibility="private" complexity="6" crap="42" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <metrics loc="157" ncloc="135" classes="1" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="76" coveredstatements="0" elements="85" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/EchoWelcomePresentationModel.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\EchoWelcomePresentationModel" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="0" elements="13" coveredelements="0"/>
      </class>
      <line num="10" type="method" name="getIconType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="11" type="stmt" count="0"/>
      <line num="15" type="method" name="getPrimaryLink" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <metrics loc="32" ncloc="30" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="0" elements="13" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Formatters/SpecialNotificationsFormatter.php">
      <class name="MediaWiki\Extension\Notifications\Formatters\SpecialNotificationsFormatter" namespace="global">
        <metrics complexity="6" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="78" coveredstatements="0" elements="80" coveredelements="0"/>
      </class>
      <line num="19" type="method" name="formatModel" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="method" name="getIconUrl" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <metrics loc="123" ncloc="114" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="78" coveredstatements="0" elements="80" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Gateway/UserNotificationGateway.php">
      <class name="MediaWiki\Extension\Notifications\Gateway\UserNotificationGateway" namespace="global">
        <metrics complexity="18" methods="6" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="87" coveredstatements="65" elements="93" coveredelements="67"/>
      </class>
      <line num="33" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="38" type="stmt" count="4"/>
      <line num="46" type="method" name="markRead" visibility="public" complexity="5" crap="5.00" count="1"/>
      <line num="47" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="69" type="stmt" count="1"/>
      <line num="70" type="stmt" count="1"/>
      <line num="73" type="stmt" count="1"/>
      <line num="82" type="method" name="markUnRead" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="116" type="method" name="markAllRead" visibility="public" complexity="2" crap="2.00" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="118" type="stmt" count="1"/>
      <line num="119" type="stmt" count="0"/>
      <line num="122" type="stmt" count="1"/>
      <line num="123" type="stmt" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="128" type="stmt" count="1"/>
      <line num="129" type="stmt" count="1"/>
      <line num="130" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="142" type="method" name="getCappedNotificationCount" visibility="public" complexity="3" crap="3.00" count="1"/>
      <line num="147" type="stmt" count="1"/>
      <line num="148" type="stmt" count="1"/>
      <line num="152" type="stmt" count="1"/>
      <line num="153" type="stmt" count="0"/>
      <line num="155" type="stmt" count="1"/>
      <line num="157" type="stmt" count="1"/>
      <line num="158" type="stmt" count="1"/>
      <line num="159" type="stmt" count="1"/>
      <line num="160" type="stmt" count="1"/>
      <line num="161" type="stmt" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="163" type="stmt" count="1"/>
      <line num="164" type="stmt" count="1"/>
      <line num="165" type="stmt" count="1"/>
      <line num="166" type="stmt" count="1"/>
      <line num="167" type="stmt" count="1"/>
      <line num="168" type="stmt" count="1"/>
      <line num="169" type="stmt" count="1"/>
      <line num="179" type="method" name="getUnreadNotifications" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="180" type="stmt" count="1"/>
      <line num="181" type="stmt" count="1"/>
      <line num="182" type="stmt" count="1"/>
      <line num="183" type="stmt" count="1"/>
      <line num="184" type="stmt" count="1"/>
      <line num="185" type="stmt" count="1"/>
      <line num="186" type="stmt" count="1"/>
      <line num="187" type="stmt" count="1"/>
      <line num="188" type="stmt" count="1"/>
      <line num="189" type="stmt" count="1"/>
      <line num="190" type="stmt" count="1"/>
      <line num="191" type="stmt" count="1"/>
      <line num="192" type="stmt" count="1"/>
      <line num="194" type="stmt" count="1"/>
      <line num="195" type="stmt" count="1"/>
      <line num="196" type="stmt" count="1"/>
      <line num="199" type="stmt" count="1"/>
      <metrics loc="203" ncloc="156" classes="1" methods="6" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="87" coveredstatements="65" elements="93" coveredelements="67"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks.php">
      <class name="MediaWiki\Extension\Notifications\Hooks" namespace="global">
        <metrics complexity="184" methods="35" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="678" coveredstatements="128" elements="713" coveredelements="132"/>
      </class>
      <line num="114" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="7"/>
      <line num="133" type="stmt" count="7"/>
      <line num="139" type="method" name="onUserGetDefaultOptions" visibility="public" complexity="8" crap="8.36" count="1"/>
      <line num="140" type="stmt" count="1"/>
      <line num="141" type="stmt" count="1"/>
      <line num="143" type="stmt" count="0"/>
      <line num="146" type="stmt" count="1"/>
      <line num="149" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <line num="151" type="stmt" count="1"/>
      <line num="152" type="stmt" count="1"/>
      <line num="154" type="stmt" count="1"/>
      <line num="155" type="stmt" count="1"/>
      <line num="156" type="stmt" count="1"/>
      <line num="157" type="stmt" count="1"/>
      <line num="158" type="stmt" count="1"/>
      <line num="159" type="stmt" count="1"/>
      <line num="160" type="stmt" count="1"/>
      <line num="161" type="stmt" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="163" type="stmt" count="1"/>
      <line num="164" type="stmt" count="1"/>
      <line num="165" type="stmt" count="1"/>
      <line num="166" type="stmt" count="1"/>
      <line num="167" type="stmt" count="1"/>
      <line num="168" type="stmt" count="1"/>
      <line num="169" type="stmt" count="1"/>
      <line num="170" type="stmt" count="1"/>
      <line num="171" type="stmt" count="1"/>
      <line num="172" type="stmt" count="1"/>
      <line num="173" type="stmt" count="1"/>
      <line num="174" type="stmt" count="1"/>
      <line num="175" type="stmt" count="1"/>
      <line num="177" type="stmt" count="1"/>
      <line num="178" type="stmt" count="1"/>
      <line num="179" type="stmt" count="1"/>
      <line num="180" type="stmt" count="1"/>
      <line num="184" type="stmt" count="1"/>
      <line num="185" type="stmt" count="1"/>
      <line num="186" type="stmt" count="1"/>
      <line num="188" type="stmt" count="1"/>
      <line num="189" type="stmt" count="1"/>
      <line num="190" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="198" type="stmt" count="1"/>
      <line num="199" type="stmt" count="1"/>
      <line num="200" type="stmt" count="1"/>
      <line num="201" type="stmt" count="1"/>
      <line num="203" type="stmt" count="1"/>
      <line num="204" type="stmt" count="1"/>
      <line num="205" type="stmt" count="1"/>
      <line num="207" type="stmt" count="1"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="219" type="method" name="initEchoExtension" visibility="public" complexity="8" crap="72" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="255" type="stmt" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="260" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="270" type="stmt" count="0"/>
      <line num="276" type="method" name="onResourceLoaderRegisterModules" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="280" type="stmt" count="0"/>
      <line num="281" type="stmt" count="0"/>
      <line num="282" type="stmt" count="0"/>
      <line num="283" type="stmt" count="0"/>
      <line num="284" type="stmt" count="0"/>
      <line num="285" type="stmt" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="288" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="300" type="method" name="onGetPreferences" visibility="public" complexity="26" crap="702" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="307" type="stmt" count="0"/>
      <line num="308" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="313" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="317" type="stmt" count="0"/>
      <line num="318" type="stmt" count="0"/>
      <line num="319" type="stmt" count="0"/>
      <line num="322" type="stmt" count="0"/>
      <line num="323" type="stmt" count="0"/>
      <line num="324" type="stmt" count="0"/>
      <line num="326" type="stmt" count="0"/>
      <line num="327" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="332" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="336" type="stmt" count="0"/>
      <line num="337" type="stmt" count="0"/>
      <line num="338" type="stmt" count="0"/>
      <line num="339" type="stmt" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="341" type="stmt" count="0"/>
      <line num="342" type="stmt" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="346" type="stmt" count="0"/>
      <line num="347" type="stmt" count="0"/>
      <line num="349" type="stmt" count="0"/>
      <line num="350" type="stmt" count="0"/>
      <line num="353" type="stmt" count="0"/>
      <line num="354" type="stmt" count="0"/>
      <line num="355" type="stmt" count="0"/>
      <line num="356" type="stmt" count="0"/>
      <line num="357" type="stmt" count="0"/>
      <line num="360" type="stmt" count="0"/>
      <line num="361" type="stmt" count="0"/>
      <line num="364" type="stmt" count="0"/>
      <line num="366" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="371" type="stmt" count="0"/>
      <line num="372" type="stmt" count="0"/>
      <line num="373" type="stmt" count="0"/>
      <line num="374" type="stmt" count="0"/>
      <line num="375" type="stmt" count="0"/>
      <line num="376" type="stmt" count="0"/>
      <line num="380" type="stmt" count="0"/>
      <line num="381" type="stmt" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="392" type="stmt" count="0"/>
      <line num="393" type="stmt" count="0"/>
      <line num="405" type="stmt" count="0"/>
      <line num="406" type="stmt" count="0"/>
      <line num="411" type="stmt" count="0"/>
      <line num="412" type="stmt" count="0"/>
      <line num="416" type="stmt" count="0"/>
      <line num="417" type="stmt" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="420" type="stmt" count="0"/>
      <line num="421" type="stmt" count="0"/>
      <line num="423" type="stmt" count="0"/>
      <line num="424" type="stmt" count="0"/>
      <line num="425" type="stmt" count="0"/>
      <line num="426" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="432" type="stmt" count="0"/>
      <line num="433" type="stmt" count="0"/>
      <line num="435" type="stmt" count="0"/>
      <line num="436" type="stmt" count="0"/>
      <line num="439" type="stmt" count="0"/>
      <line num="440" type="stmt" count="0"/>
      <line num="445" type="stmt" count="0"/>
      <line num="446" type="stmt" count="0"/>
      <line num="447" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="449" type="stmt" count="0"/>
      <line num="450" type="stmt" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="456" type="stmt" count="0"/>
      <line num="457" type="stmt" count="0"/>
      <line num="458" type="stmt" count="0"/>
      <line num="459" type="stmt" count="0"/>
      <line num="460" type="stmt" count="0"/>
      <line num="461" type="stmt" count="0"/>
      <line num="462" type="stmt" count="0"/>
      <line num="463" type="stmt" count="0"/>
      <line num="465" type="stmt" count="0"/>
      <line num="466" type="stmt" count="0"/>
      <line num="467" type="stmt" count="0"/>
      <line num="468" type="stmt" count="0"/>
      <line num="471" type="stmt" count="0"/>
      <line num="472" type="stmt" count="0"/>
      <line num="475" type="stmt" count="0"/>
      <line num="476" type="stmt" count="0"/>
      <line num="477" type="stmt" count="0"/>
      <line num="478" type="stmt" count="0"/>
      <line num="479" type="stmt" count="0"/>
      <line num="482" type="stmt" count="0"/>
      <line num="483" type="stmt" count="0"/>
      <line num="493" type="stmt" count="0"/>
      <line num="494" type="stmt" count="0"/>
      <line num="495" type="stmt" count="0"/>
      <line num="496" type="stmt" count="0"/>
      <line num="498" type="stmt" count="0"/>
      <line num="499" type="stmt" count="0"/>
      <line num="501" type="stmt" count="0"/>
      <line num="502" type="stmt" count="0"/>
      <line num="503" type="stmt" count="0"/>
      <line num="504" type="stmt" count="0"/>
      <line num="507" type="stmt" count="0"/>
      <line num="508" type="stmt" count="0"/>
      <line num="509" type="stmt" count="0"/>
      <line num="510" type="stmt" count="0"/>
      <line num="513" type="stmt" count="0"/>
      <line num="514" type="stmt" count="0"/>
      <line num="515" type="stmt" count="0"/>
      <line num="516" type="stmt" count="0"/>
      <line num="517" type="stmt" count="0"/>
      <line num="518" type="stmt" count="0"/>
      <line num="521" type="stmt" count="0"/>
      <line num="522" type="stmt" count="0"/>
      <line num="523" type="stmt" count="0"/>
      <line num="524" type="stmt" count="0"/>
      <line num="525" type="stmt" count="0"/>
      <line num="534" type="method" name="onPreferencesGetIcon" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="535" type="stmt" count="0"/>
      <line num="542" type="method" name="isEmailChangeAllowed" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="543" type="stmt" count="0"/>
      <line num="558" type="method" name="onUserGroupsChanged" visibility="public" complexity="11" crap="40.15" count="1"/>
      <line num="559" type="stmt" count="1"/>
      <line num="561" type="stmt" count="0"/>
      <line num="564" type="stmt" count="1"/>
      <line num="567" type="stmt" count="1"/>
      <line num="568" type="stmt" count="0"/>
      <line num="569" type="stmt" count="0"/>
      <line num="570" type="stmt" count="0"/>
      <line num="573" type="stmt" count="0"/>
      <line num="576" type="stmt" count="0"/>
      <line num="577" type="stmt" count="0"/>
      <line num="578" type="stmt" count="0"/>
      <line num="579" type="stmt" count="0"/>
      <line num="580" type="stmt" count="0"/>
      <line num="581" type="stmt" count="0"/>
      <line num="582" type="stmt" count="0"/>
      <line num="583" type="stmt" count="0"/>
      <line num="584" type="stmt" count="0"/>
      <line num="585" type="stmt" count="0"/>
      <line num="587" type="stmt" count="0"/>
      <line num="588" type="stmt" count="0"/>
      <line num="589" type="stmt" count="0"/>
      <line num="590" type="stmt" count="0"/>
      <line num="593" type="stmt" count="0"/>
      <line num="597" type="stmt" count="1"/>
      <line num="598" type="stmt" count="0"/>
      <line num="603" type="stmt" count="1"/>
      <line num="604" type="stmt" count="1"/>
      <line num="605" type="stmt" count="1"/>
      <line num="606" type="stmt" count="1"/>
      <line num="607" type="stmt" count="0"/>
      <line num="609" type="stmt" count="1"/>
      <line num="613" type="stmt" count="1"/>
      <line num="617" type="stmt" count="0"/>
      <line num="618" type="stmt" count="0"/>
      <line num="619" type="stmt" count="0"/>
      <line num="621" type="stmt" count="0"/>
      <line num="622" type="stmt" count="0"/>
      <line num="623" type="stmt" count="0"/>
      <line num="626" type="stmt" count="1"/>
      <line num="627" type="stmt" count="1"/>
      <line num="628" type="stmt" count="1"/>
      <line num="629" type="stmt" count="1"/>
      <line num="630" type="stmt" count="1"/>
      <line num="631" type="stmt" count="1"/>
      <line num="632" type="stmt" count="1"/>
      <line num="639" type="method" name="onBlockIpComplete" visibility="public" complexity="4" crap="4" count="5"/>
      <line num="640" type="stmt" count="5"/>
      <line num="641" type="stmt" count="1"/>
      <line num="644" type="stmt" count="4"/>
      <line num="645" type="stmt" count="4"/>
      <line num="646" type="stmt" count="1"/>
      <line num="649" type="stmt" count="3"/>
      <line num="650" type="stmt" count="1"/>
      <line num="653" type="stmt" count="2"/>
      <line num="655" type="stmt" count="2"/>
      <line num="656" type="stmt" count="2"/>
      <line num="657" type="stmt" count="2"/>
      <line num="658" type="stmt" count="2"/>
      <line num="659" type="stmt" count="2"/>
      <line num="660" type="stmt" count="2"/>
      <line num="661" type="stmt" count="2"/>
      <line num="662" type="stmt" count="2"/>
      <line num="663" type="stmt" count="2"/>
      <line num="669" type="method" name="onUnblockUserComplete" visibility="public" complexity="4" crap="4" count="4"/>
      <line num="670" type="stmt" count="4"/>
      <line num="671" type="stmt" count="1"/>
      <line num="674" type="stmt" count="3"/>
      <line num="675" type="stmt" count="3"/>
      <line num="676" type="stmt" count="1"/>
      <line num="679" type="stmt" count="2"/>
      <line num="680" type="stmt" count="1"/>
      <line num="683" type="stmt" count="1"/>
      <line num="685" type="stmt" count="1"/>
      <line num="686" type="stmt" count="1"/>
      <line num="687" type="stmt" count="1"/>
      <line num="688" type="stmt" count="1"/>
      <line num="697" type="method" name="getBlockTargetRecipient" visibility="private" complexity="3" crap="3" count="5"/>
      <line num="698" type="stmt" count="5"/>
      <line num="700" type="stmt" count="5"/>
      <line num="701" type="stmt" count="1"/>
      <line num="704" type="stmt" count="4"/>
      <line num="713" type="method" name="onLinksUpdateComplete" visibility="public" complexity="17" crap="18.23" count="2"/>
      <line num="715" type="stmt" count="2"/>
      <line num="716" type="stmt" count="2"/>
      <line num="717" type="stmt" count="2"/>
      <line num="718" type="stmt" count="0"/>
      <line num="723" type="stmt" count="2"/>
      <line num="724" type="stmt" count="1"/>
      <line num="731" type="stmt" count="2"/>
      <line num="732" type="stmt" count="2"/>
      <line num="734" type="stmt" count="0"/>
      <line num="737" type="stmt" count="2"/>
      <line num="738" type="stmt" count="2"/>
      <line num="739" type="stmt" count="2"/>
      <line num="740" type="stmt" count="2"/>
      <line num="741" type="stmt" count="0"/>
      <line num="747" type="stmt" count="2"/>
      <line num="750" type="stmt" count="2"/>
      <line num="751" type="stmt" count="1"/>
      <line num="752" type="stmt" count="1"/>
      <line num="753" type="stmt" count="1"/>
      <line num="754" type="stmt" count="0"/>
      <line num="757" type="stmt" count="1"/>
      <line num="759" type="stmt" count="1"/>
      <line num="760" type="stmt" count="1"/>
      <line num="761" type="stmt" count="0"/>
      <line num="763" type="stmt" count="1"/>
      <line num="764" type="stmt" count="1"/>
      <line num="765" type="stmt" count="1"/>
      <line num="766" type="stmt" count="1"/>
      <line num="767" type="stmt" count="1"/>
      <line num="768" type="stmt" count="1"/>
      <line num="769" type="stmt" count="1"/>
      <line num="770" type="stmt" count="1"/>
      <line num="771" type="stmt" count="1"/>
      <line num="772" type="stmt" count="1"/>
      <line num="773" type="stmt" count="1"/>
      <line num="775" type="stmt" count="1"/>
      <line num="776" type="stmt" count="0"/>
      <line num="787" type="method" name="onBeforePageDisplay" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="788" type="stmt" count="0"/>
      <line num="790" type="stmt" count="0"/>
      <line num="791" type="stmt" count="0"/>
      <line num="792" type="stmt" count="0"/>
      <line num="794" type="stmt" count="0"/>
      <line num="797" type="stmt" count="0"/>
      <line num="799" type="stmt" count="0"/>
      <line num="803" type="stmt" count="0"/>
      <line num="805" type="stmt" count="0"/>
      <line num="806" type="stmt" count="0"/>
      <line num="807" type="stmt" count="0"/>
      <line num="808" type="stmt" count="0"/>
      <line num="811" type="method" name="processMarkAsRead" visibility="private" complexity="14" crap="210" count="0"/>
      <line num="812" type="stmt" count="0"/>
      <line num="813" type="stmt" count="0"/>
      <line num="814" type="stmt" count="0"/>
      <line num="815" type="stmt" count="0"/>
      <line num="818" type="stmt" count="0"/>
      <line num="819" type="stmt" count="0"/>
      <line num="820" type="stmt" count="0"/>
      <line num="821" type="stmt" count="0"/>
      <line num="823" type="stmt" count="0"/>
      <line num="824" type="stmt" count="0"/>
      <line num="825" type="stmt" count="0"/>
      <line num="830" type="stmt" count="0"/>
      <line num="831" type="stmt" count="0"/>
      <line num="832" type="stmt" count="0"/>
      <line num="833" type="stmt" count="0"/>
      <line num="834" type="stmt" count="0"/>
      <line num="835" type="stmt" count="0"/>
      <line num="837" type="stmt" count="0"/>
      <line num="838" type="stmt" count="0"/>
      <line num="839" type="stmt" count="0"/>
      <line num="840" type="stmt" count="0"/>
      <line num="841" type="stmt" count="0"/>
      <line num="845" type="stmt" count="0"/>
      <line num="847" type="stmt" count="0"/>
      <line num="848" type="stmt" count="0"/>
      <line num="850" type="stmt" count="0"/>
      <line num="851" type="stmt" count="0"/>
      <line num="852" type="stmt" count="0"/>
      <line num="853" type="stmt" count="0"/>
      <line num="858" type="stmt" count="0"/>
      <line num="860" type="stmt" count="0"/>
      <line num="861" type="stmt" count="0"/>
      <line num="862" type="stmt" count="0"/>
      <line num="863" type="stmt" count="0"/>
      <line num="867" type="stmt" count="0"/>
      <line num="868" type="stmt" count="0"/>
      <line num="869" type="stmt" count="0"/>
      <line num="870" type="stmt" count="0"/>
      <line num="871" type="stmt" count="0"/>
      <line num="872" type="stmt" count="0"/>
      <line num="877" type="stmt" count="0"/>
      <line num="878" type="stmt" count="0"/>
      <line num="879" type="stmt" count="0"/>
      <line num="880" type="stmt" count="0"/>
      <line num="881" type="stmt" count="0"/>
      <line num="884" type="stmt" count="0"/>
      <line num="886" type="stmt" count="0"/>
      <line num="900" type="method" name="shouldDisplayTalkAlert" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="901" type="stmt" count="0"/>
      <line num="903" type="stmt" count="0"/>
      <line num="914" type="method" name="onSkinTemplateNavigation__Universal" visibility="public" complexity="23" crap="552" count="0"/>
      <line num="915" type="stmt" count="0"/>
      <line num="916" type="stmt" count="0"/>
      <line num="918" type="stmt" count="0"/>
      <line num="919" type="stmt" count="0"/>
      <line num="922" type="stmt" count="0"/>
      <line num="923" type="stmt" count="0"/>
      <line num="924" type="stmt" count="0"/>
      <line num="926" type="stmt" count="0"/>
      <line num="928" type="stmt" count="0"/>
      <line num="931" type="stmt" count="0"/>
      <line num="936" type="stmt" count="0"/>
      <line num="937" type="stmt" count="0"/>
      <line num="938" type="stmt" count="0"/>
      <line num="939" type="stmt" count="0"/>
      <line num="941" type="stmt" count="0"/>
      <line num="942" type="stmt" count="0"/>
      <line num="943" type="stmt" count="0"/>
      <line num="945" type="stmt" count="0"/>
      <line num="948" type="stmt" count="0"/>
      <line num="949" type="stmt" count="0"/>
      <line num="950" type="stmt" count="0"/>
      <line num="951" type="stmt" count="0"/>
      <line num="952" type="stmt" count="0"/>
      <line num="953" type="stmt" count="0"/>
      <line num="954" type="stmt" count="0"/>
      <line num="955" type="stmt" count="0"/>
      <line num="956" type="stmt" count="0"/>
      <line num="960" type="stmt" count="0"/>
      <line num="961" type="stmt" count="0"/>
      <line num="964" type="stmt" count="0"/>
      <line num="967" type="stmt" count="0"/>
      <line num="968" type="stmt" count="0"/>
      <line num="970" type="stmt" count="0"/>
      <line num="972" type="stmt" count="0"/>
      <line num="973" type="stmt" count="0"/>
      <line num="974" type="stmt" count="0"/>
      <line num="979" type="stmt" count="0"/>
      <line num="981" type="stmt" count="0"/>
      <line num="983" type="stmt" count="0"/>
      <line num="984" type="stmt" count="0"/>
      <line num="986" type="stmt" count="0"/>
      <line num="987" type="stmt" count="0"/>
      <line num="988" type="stmt" count="0"/>
      <line num="989" type="stmt" count="0"/>
      <line num="992" type="stmt" count="0"/>
      <line num="993" type="stmt" count="0"/>
      <line num="997" type="stmt" count="0"/>
      <line num="999" type="stmt" count="0"/>
      <line num="1001" type="stmt" count="0"/>
      <line num="1002" type="stmt" count="0"/>
      <line num="1003" type="stmt" count="0"/>
      <line num="1006" type="stmt" count="0"/>
      <line num="1007" type="stmt" count="0"/>
      <line num="1008" type="stmt" count="0"/>
      <line num="1010" type="stmt" count="0"/>
      <line num="1013" type="stmt" count="0"/>
      <line num="1014" type="stmt" count="0"/>
      <line num="1015" type="stmt" count="0"/>
      <line num="1017" type="stmt" count="0"/>
      <line num="1018" type="stmt" count="0"/>
      <line num="1019" type="stmt" count="0"/>
      <line num="1022" type="stmt" count="0"/>
      <line num="1023" type="stmt" count="0"/>
      <line num="1024" type="stmt" count="0"/>
      <line num="1025" type="stmt" count="0"/>
      <line num="1026" type="stmt" count="0"/>
      <line num="1027" type="stmt" count="0"/>
      <line num="1028" type="stmt" count="0"/>
      <line num="1029" type="stmt" count="0"/>
      <line num="1030" type="stmt" count="0"/>
      <line num="1034" type="stmt" count="0"/>
      <line num="1035" type="stmt" count="0"/>
      <line num="1036" type="stmt" count="0"/>
      <line num="1037" type="stmt" count="0"/>
      <line num="1038" type="stmt" count="0"/>
      <line num="1039" type="stmt" count="0"/>
      <line num="1040" type="stmt" count="0"/>
      <line num="1041" type="stmt" count="0"/>
      <line num="1042" type="stmt" count="0"/>
      <line num="1043" type="stmt" count="0"/>
      <line num="1044" type="stmt" count="0"/>
      <line num="1045" type="stmt" count="0"/>
      <line num="1046" type="stmt" count="0"/>
      <line num="1047" type="stmt" count="0"/>
      <line num="1048" type="stmt" count="0"/>
      <line num="1050" type="stmt" count="0"/>
      <line num="1051" type="stmt" count="0"/>
      <line num="1052" type="stmt" count="0"/>
      <line num="1053" type="stmt" count="0"/>
      <line num="1054" type="stmt" count="0"/>
      <line num="1055" type="stmt" count="0"/>
      <line num="1056" type="stmt" count="0"/>
      <line num="1057" type="stmt" count="0"/>
      <line num="1058" type="stmt" count="0"/>
      <line num="1059" type="stmt" count="0"/>
      <line num="1060" type="stmt" count="0"/>
      <line num="1061" type="stmt" count="0"/>
      <line num="1062" type="stmt" count="0"/>
      <line num="1063" type="stmt" count="0"/>
      <line num="1064" type="stmt" count="0"/>
      <line num="1065" type="stmt" count="0"/>
      <line num="1067" type="stmt" count="0"/>
      <line num="1068" type="stmt" count="0"/>
      <line num="1069" type="stmt" count="0"/>
      <line num="1070" type="stmt" count="0"/>
      <line num="1071" type="stmt" count="0"/>
      <line num="1072" type="stmt" count="0"/>
      <line num="1075" type="stmt" count="0"/>
      <line num="1081" type="stmt" count="0"/>
      <line num="1082" type="stmt" count="0"/>
      <line num="1084" type="stmt" count="0"/>
      <line num="1085" type="stmt" count="0"/>
      <line num="1086" type="stmt" count="0"/>
      <line num="1087" type="stmt" count="0"/>
      <line num="1088" type="stmt" count="0"/>
      <line num="1092" type="method" name="getUserTypeForStats" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="1093" type="stmt" count="0"/>
      <line num="1094" type="stmt" count="0"/>
      <line num="1095" type="stmt" count="0"/>
      <line num="1096" type="stmt" count="0"/>
      <line num="1097" type="stmt" count="0"/>
      <line num="1098" type="stmt" count="0"/>
      <line num="1100" type="stmt" count="0"/>
      <line num="1107" type="method" name="onOutputPageCheckLastModified" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="1108" type="stmt" count="0"/>
      <line num="1109" type="stmt" count="0"/>
      <line num="1111" type="stmt" count="0"/>
      <line num="1114" type="stmt" count="0"/>
      <line num="1115" type="stmt" count="0"/>
      <line num="1116" type="stmt" count="0"/>
      <line num="1117" type="stmt" count="0"/>
      <line num="1118" type="stmt" count="0"/>
      <line num="1119" type="stmt" count="0"/>
      <line num="1122" type="stmt" count="0"/>
      <line num="1123" type="stmt" count="0"/>
      <line num="1142" type="method" name="onGetNewMessagesAlert" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="1145" type="stmt" count="0"/>
      <line num="1146" type="stmt" count="0"/>
      <line num="1147" type="stmt" count="0"/>
      <line num="1150" type="stmt" count="0"/>
      <line num="1153" type="stmt" count="0"/>
      <line num="1166" type="method" name="onRollbackComplete" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="1172" type="stmt" count="0"/>
      <line num="1173" type="stmt" count="0"/>
      <line num="1176" type="stmt" count="0"/>
      <line num="1178" type="stmt" count="0"/>
      <line num="1180" type="stmt" count="0"/>
      <line num="1182" type="stmt" count="0"/>
      <line num="1183" type="stmt" count="0"/>
      <line num="1184" type="stmt" count="0"/>
      <line num="1185" type="stmt" count="0"/>
      <line num="1186" type="stmt" count="0"/>
      <line num="1187" type="stmt" count="0"/>
      <line num="1188" type="stmt" count="0"/>
      <line num="1189" type="stmt" count="0"/>
      <line num="1190" type="stmt" count="0"/>
      <line num="1191" type="stmt" count="0"/>
      <line num="1192" type="stmt" count="0"/>
      <line num="1201" type="method" name="onUserSaveSettings" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="1204" type="stmt" count="0"/>
      <line num="1208" type="stmt" count="0"/>
      <line num="1209" type="stmt" count="0"/>
      <line num="1212" type="stmt" count="0"/>
      <line num="1214" type="stmt" count="0"/>
      <line num="1215" type="stmt" count="0"/>
      <line num="1226" type="method" name="getVirtualUserOptions" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="1227" type="stmt" count="0"/>
      <line num="1228" type="stmt" count="0"/>
      <line num="1229" type="stmt" count="0"/>
      <line num="1230" type="stmt" count="0"/>
      <line num="1231" type="stmt" count="0"/>
      <line num="1233" type="stmt" count="0"/>
      <line num="1242" type="method" name="onLoadUserOptions" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="1243" type="stmt" count="0"/>
      <line num="1245" type="stmt" count="0"/>
      <line num="1246" type="stmt" count="0"/>
      <line num="1258" type="method" name="onSaveUserOptions" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="1259" type="stmt" count="0"/>
      <line num="1261" type="stmt" count="0"/>
      <line num="1262" type="stmt" count="0"/>
      <line num="1263" type="stmt" count="0"/>
      <line num="1275" type="method" name="mapToInt" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="1276" type="stmt" count="0"/>
      <line num="1278" type="stmt" count="0"/>
      <line num="1279" type="stmt" count="0"/>
      <line num="1280" type="stmt" count="0"/>
      <line num="1281" type="stmt" count="0"/>
      <line num="1283" type="stmt" count="0"/>
      <line num="1286" type="stmt" count="0"/>
      <line num="1295" type="method" name="onUserClearNewTalkNotification" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="1296" type="stmt" count="0"/>
      <line num="1297" type="stmt" count="0"/>
      <line num="1298" type="stmt" count="0"/>
      <line num="1299" type="stmt" count="0"/>
      <line num="1311" type="method" name="onEmailUserComplete" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="1312" type="stmt" count="0"/>
      <line num="1314" type="stmt" count="0"/>
      <line num="1317" type="stmt" count="0"/>
      <line num="1318" type="stmt" count="0"/>
      <line num="1322" type="stmt" count="0"/>
      <line num="1323" type="stmt" count="0"/>
      <line num="1324" type="stmt" count="0"/>
      <line num="1325" type="stmt" count="0"/>
      <line num="1326" type="stmt" count="0"/>
      <line num="1327" type="stmt" count="0"/>
      <line num="1329" type="stmt" count="0"/>
      <line num="1332" type="stmt" count="0"/>
      <line num="1333" type="stmt" count="0"/>
      <line num="1334" type="stmt" count="0"/>
      <line num="1335" type="stmt" count="0"/>
      <line num="1336" type="stmt" count="0"/>
      <line num="1337" type="stmt" count="0"/>
      <line num="1338" type="stmt" count="0"/>
      <line num="1344" type="method" name="onLoginFormValidErrorMessages" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="1345" type="stmt" count="0"/>
      <line num="1348" type="method" name="getConfigVars" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="1349" type="stmt" count="0"/>
      <line num="1350" type="stmt" count="0"/>
      <line num="1351" type="stmt" count="0"/>
      <line num="1352" type="stmt" count="0"/>
      <line num="1362" type="method" name="onArticleUndelete" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="1363" type="stmt" count="0"/>
      <line num="1364" type="stmt" count="0"/>
      <line num="1365" type="stmt" count="0"/>
      <line num="1366" type="stmt" count="0"/>
      <line num="1367" type="stmt" count="0"/>
      <line num="1368" type="stmt" count="0"/>
      <line num="1379" type="method" name="onSpecialMuteModifyFormFields" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="1380" type="stmt" count="0"/>
      <line num="1381" type="stmt" count="0"/>
      <line num="1382" type="stmt" count="0"/>
      <line num="1383" type="stmt" count="0"/>
      <line num="1384" type="stmt" count="0"/>
      <line num="1385" type="stmt" count="0"/>
      <line num="1386" type="stmt" count="0"/>
      <line num="1387" type="stmt" count="0"/>
      <line num="1388" type="stmt" count="0"/>
      <line num="1389" type="stmt" count="0"/>
      <line num="1390" type="stmt" count="0"/>
      <line num="1391" type="stmt" count="0"/>
      <line num="1392" type="stmt" count="0"/>
      <line num="1393" type="stmt" count="0"/>
      <line num="1394" type="stmt" count="0"/>
      <line num="1402" type="method" name="onRecentChange_save" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="1403" type="stmt" count="0"/>
      <line num="1404" type="stmt" count="0"/>
      <line num="1406" type="stmt" count="0"/>
      <line num="1410" type="stmt" count="0"/>
      <line num="1412" type="stmt" count="0"/>
      <line num="1413" type="stmt" count="0"/>
      <line num="1415" type="stmt" count="0"/>
      <line num="1417" type="stmt" count="0"/>
      <line num="1418" type="stmt" count="0"/>
      <line num="1419" type="stmt" count="0"/>
      <line num="1420" type="stmt" count="0"/>
      <line num="1421" type="stmt" count="0"/>
      <line num="1422" type="stmt" count="0"/>
      <line num="1423" type="stmt" count="0"/>
      <line num="1424" type="stmt" count="0"/>
      <line num="1425" type="stmt" count="0"/>
      <line num="1426" type="stmt" count="0"/>
      <line num="1427" type="stmt" count="0"/>
      <line num="1428" type="stmt" count="0"/>
      <line num="1429" type="stmt" count="0"/>
      <line num="1430" type="stmt" count="0"/>
      <line num="1440" type="method" name="onApiMain__moduleManager" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="1441" type="stmt" count="0"/>
      <line num="1442" type="stmt" count="0"/>
      <line num="1443" type="stmt" count="0"/>
      <line num="1444" type="stmt" count="0"/>
      <line num="1445" type="stmt" count="0"/>
      <line num="1446" type="stmt" count="0"/>
      <line num="1447" type="stmt" count="0"/>
      <line num="1448" type="stmt" count="0"/>
      <line num="1449" type="stmt" count="0"/>
      <line num="1450" type="stmt" count="0"/>
      <line num="1451" type="stmt" count="0"/>
      <line num="1452" type="stmt" count="0"/>
      <line num="1460" type="method" name="getSystemUser" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="1461" type="stmt" count="0"/>
      <line num="1462" type="stmt" count="0"/>
      <line num="1463" type="stmt" count="0"/>
      <line num="1464" type="stmt" count="0"/>
      <line num="1465" type="stmt" count="0"/>
      <line num="1466" type="stmt" count="0"/>
      <line num="1468" type="stmt" count="0"/>
      <line num="1478" type="method" name="setRevertStatus" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="1479" type="stmt" count="0"/>
      <line num="1480" type="stmt" count="0"/>
      <metrics loc="1485" ncloc="1146" classes="1" methods="35" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="678" coveredstatements="128" elements="713" coveredelements="132"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/BeforeCreateEchoEventHook.php">
      <metrics loc="27" ncloc="12" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/BeforeDisplayOrangeAlertHook.php">
      <metrics loc="23" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/BeforeEchoEventInsertHook.php">
      <metrics loc="21" ncloc="10" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoAbortEmailNotificationHook.php">
      <metrics loc="23" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoCanAbortNewMessagesAlertHook.php">
      <metrics loc="18" ncloc="8" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoCreateNotificationCompleteHook.php">
      <metrics loc="21" ncloc="10" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoGetBundleRulesHook.php">
      <metrics loc="22" ncloc="10" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoGetDefaultNotifiedUsersHook.php">
      <metrics loc="23" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoGetEventsForRevisionHook.php">
      <metrics loc="23" ncloc="10" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/EchoGetNotificationTypesHook.php">
      <metrics loc="24" ncloc="11" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Hooks/HookRunner.php">
      <class name="MediaWiki\Extension\Notifications\Hooks\HookRunner" namespace="global">
        <metrics complexity="11" methods="11" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="40" coveredstatements="40" elements="51" coveredelements="51"/>
      </class>
      <line num="29" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="10"/>
      <line num="32" type="stmt" count="10"/>
      <line num="37" type="method" name="onBeforeCreateEchoEvent" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="51" type="method" name="onBeforeDisplayOrangeAlert" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="61" type="method" name="onBeforeEchoEventInsert" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="71" type="method" name="onEchoAbortEmailNotification" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="72" type="stmt" count="1"/>
      <line num="73" type="stmt" count="1"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="81" type="method" name="onEchoCanAbortNewMessagesAlert" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="90" type="method" name="onEchoCreateNotificationComplete" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="91" type="stmt" count="1"/>
      <line num="92" type="stmt" count="1"/>
      <line num="93" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="100" type="method" name="onEchoGetBundleRules" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="1"/>
      <line num="104" type="stmt" count="1"/>
      <line num="110" type="method" name="onEchoGetDefaultNotifiedUsers" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="120" type="method" name="onEchoGetEventsForRevision" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="121" type="stmt" count="1"/>
      <line num="122" type="stmt" count="1"/>
      <line num="123" type="stmt" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="130" type="method" name="onEchoGetNotificationTypes" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="131" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <line num="133" type="stmt" count="1"/>
      <line num="134" type="stmt" count="1"/>
      <metrics loc="137" ncloc="103" classes="1" methods="11" coveredmethods="11" conditionals="0" coveredconditionals="0" statements="40" coveredstatements="40" elements="51" coveredelements="51"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Iterator/CallbackIterator.php">
      <class name="MediaWiki\Extension\Notifications\Iterator\CallbackIterator" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="3" coveredstatements="3" elements="5" coveredelements="5"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="20" type="stmt" count="1"/>
      <line num="21" type="stmt" count="1"/>
      <line num="25" type="method" name="current" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <metrics loc="29" ncloc="20" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="3" coveredstatements="3" elements="5" coveredelements="5"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Iterator/FilteredSequentialIterator.php">
      <class name="MediaWiki\Extension\Notifications\Iterator\FilteredSequentialIterator" namespace="global">
        <metrics complexity="17" methods="5" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="33" coveredstatements="25" elements="38" coveredelements="28"/>
      </class>
      <line num="59" type="method" name="add" visibility="public" complexity="4" crap="9.49" count="5"/>
      <line num="60" type="stmt" count="5"/>
      <line num="61" type="stmt" count="5"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="72" type="stmt" count="5"/>
      <line num="78" type="method" name="addFilter" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="85" type="method" name="getIterator" visibility="public" complexity="2" crap="2" count="6"/>
      <line num="86" type="stmt" count="6"/>
      <line num="87" type="stmt" count="6"/>
      <line num="88" type="stmt" count="2"/>
      <line num="91" type="stmt" count="6"/>
      <line num="97" type="method" name="createIterator" visibility="protected" complexity="4" crap="4" count="6"/>
      <line num="98" type="stmt" count="6"/>
      <line num="99" type="stmt" count="6"/>
      <line num="100" type="stmt" count="1"/>
      <line num="102" type="stmt" count="5"/>
      <line num="103" type="stmt" count="2"/>
      <line num="106" type="stmt" count="3"/>
      <line num="113" type="method" name="createFilter" visibility="protected" complexity="6" crap="6.02" count="2"/>
      <line num="114" type="stmt" count="2"/>
      <line num="115" type="stmt" count="2"/>
      <line num="116" type="stmt" count="0"/>
      <line num="118" type="stmt" count="2"/>
      <line num="119" type="stmt" count="1"/>
      <line num="122" type="stmt" count="1"/>
      <line num="124" type="stmt" count="1"/>
      <line num="125" type="stmt" count="1"/>
      <line num="126" type="stmt" count="1"/>
      <line num="127" type="stmt" count="1"/>
      <line num="131" type="stmt" count="1"/>
      <line num="132" type="stmt" count="1"/>
      <metrics loc="136" ncloc="83" classes="1" methods="5" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="33" coveredstatements="25" elements="38" coveredelements="28"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Iterator/MultipleIterator.php">
      <class name="MediaWiki\Extension\Notifications\Iterator\MultipleIterator" namespace="global">
        <metrics complexity="13" methods="8" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="28" coveredelements="0"/>
      </class>
      <line num="24" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="27" type="method" name="rewind" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="38" type="method" name="valid" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="42" type="method" name="next" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="53" type="method" name="current" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="63" type="method" name="key" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="67" type="method" name="hasChildren" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="71" type="method" name="getChildren" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <metrics loc="77" ncloc="63" classes="1" methods="8" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="28" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Iterator/NotRecursiveIterator.php">
      <class name="MediaWiki\Extension\Notifications\Iterator\NotRecursiveIterator" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
      </class>
      <line num="16" type="method" name="hasChildren" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="20" type="method" name="getChildren" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <metrics loc="25" ncloc="17" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="0" elements="4" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Jobs/NotificationDeleteJob.php">
      <class name="MediaWiki\Extension\Notifications\Jobs\NotificationDeleteJob" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="0" elements="27" coveredelements="0"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="40" type="method" name="run" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <metrics loc="80" ncloc="59" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="0" elements="27" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Jobs/NotificationJob.php">
      <class name="MediaWiki\Extension\Notifications\Jobs\NotificationJob" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="6" elements="10" coveredelements="7"/>
      </class>
      <line num="13" type="method" name="__construct" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="14" type="stmt" count="1"/>
      <line num="15" type="stmt" count="1"/>
      <line num="19" type="method" name="run" visibility="public" complexity="2" crap="2.15" count="1"/>
      <line num="20" type="stmt" count="1"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="24" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <metrics loc="31" ncloc="30" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="6" elements="10" coveredelements="7"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Mapper/AbstractMapper.php">
      <class name="MediaWiki\Extension\Notifications\Mapper\AbstractMapper" namespace="global">
        <metrics complexity="11" methods="7" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="11" elements="22" coveredelements="15"/>
      </class>
      <line num="25" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="26" type="stmt" count="2"/>
      <line num="29" type="method" name="getDbProvider" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="40" type="method" name="getPrimaryDb" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="49" type="method" name="getReplicaDb" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="60" type="method" name="attachListener" visibility="public" complexity="3" crap="3" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="68" type="stmt" count="1"/>
      <line num="77" type="method" name="detachListener" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="78" type="stmt" count="1"/>
      <line num="79" type="stmt" count="1"/>
      <line num="89" type="method" name="getMethodListeners" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <metrics loc="98" ncloc="62" classes="1" methods="7" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="15" coveredstatements="11" elements="22" coveredelements="15"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Mapper/EventMapper.php">
      <class name="MediaWiki\Extension\Notifications\Mapper\EventMapper" namespace="global">
        <metrics complexity="29" methods="8" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="139" coveredstatements="75" elements="147" coveredelements="78"/>
      </class>
      <line num="22" type="method" name="insert" visibility="public" complexity="2" crap="2.00" count="4"/>
      <line num="23" type="stmt" count="4"/>
      <line num="25" type="stmt" count="4"/>
      <line num="27" type="stmt" count="4"/>
      <line num="28" type="stmt" count="4"/>
      <line num="29" type="stmt" count="4"/>
      <line num="30" type="stmt" count="4"/>
      <line num="31" type="stmt" count="4"/>
      <line num="33" type="stmt" count="4"/>
      <line num="35" type="stmt" count="4"/>
      <line num="36" type="stmt" count="4"/>
      <line num="37" type="stmt" count="0"/>
      <line num="40" type="stmt" count="4"/>
      <line num="50" type="method" name="fetchById" visibility="public" complexity="6" crap="6.02" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="53" type="stmt" count="2"/>
      <line num="54" type="stmt" count="2"/>
      <line num="55" type="stmt" count="2"/>
      <line num="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="2"/>
      <line num="64" type="stmt" count="1"/>
      <line num="67" type="stmt" count="1"/>
      <line num="74" type="method" name="toggleDeleted" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="101" type="method" name="deleteEvents" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="102" type="stmt" count="2"/>
      <line num="103" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="110" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="112" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="116" type="stmt" count="1"/>
      <line num="126" type="method" name="fetchByPage" visibility="public" complexity="6" crap="6" count="9"/>
      <line num="127" type="stmt" count="9"/>
      <line num="128" type="stmt" count="9"/>
      <line num="129" type="stmt" count="9"/>
      <line num="132" type="stmt" count="9"/>
      <line num="133" type="stmt" count="9"/>
      <line num="134" type="stmt" count="3"/>
      <line num="136" type="stmt" count="9"/>
      <line num="137" type="stmt" count="9"/>
      <line num="138" type="stmt" count="9"/>
      <line num="139" type="stmt" count="9"/>
      <line num="140" type="stmt" count="9"/>
      <line num="141" type="stmt" count="9"/>
      <line num="142" type="stmt" count="9"/>
      <line num="143" type="stmt" count="5"/>
      <line num="144" type="stmt" count="5"/>
      <line num="145" type="stmt" count="5"/>
      <line num="149" type="stmt" count="9"/>
      <line num="150" type="stmt" count="9"/>
      <line num="153" type="stmt" count="5"/>
      <line num="155" type="stmt" count="9"/>
      <line num="156" type="stmt" count="3"/>
      <line num="158" type="stmt" count="9"/>
      <line num="159" type="stmt" count="9"/>
      <line num="160" type="stmt" count="9"/>
      <line num="161" type="stmt" count="9"/>
      <line num="162" type="stmt" count="9"/>
      <line num="163" type="stmt" count="9"/>
      <line num="164" type="stmt" count="9"/>
      <line num="165" type="stmt" count="9"/>
      <line num="166" type="stmt" count="9"/>
      <line num="167" type="stmt" count="3"/>
      <line num="170" type="stmt" count="9"/>
      <line num="179" type="method" name="fetchIdsByPage" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="180" type="stmt" count="3"/>
      <line num="181" type="stmt" count="3"/>
      <line num="182" type="stmt" count="3"/>
      <line num="183" type="stmt" count="2"/>
      <line num="184" type="stmt" count="3"/>
      <line num="185" type="stmt" count="3"/>
      <line num="186" type="stmt" count="3"/>
      <line num="187" type="stmt" count="3"/>
      <line num="197" type="method" name="fetchUnreadByUserAndPage" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="239" type="method" name="deleteOrphanedEvents" visibility="public" complexity="7" crap="56" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="255" type="stmt" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="257" type="stmt" count="0"/>
      <line num="258" type="stmt" count="0"/>
      <line num="259" type="stmt" count="0"/>
      <line num="260" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="262" type="stmt" count="0"/>
      <line num="263" type="stmt" count="0"/>
      <line num="264" type="stmt" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="267" type="stmt" count="0"/>
      <line num="268" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="270" type="stmt" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <metrics loc="277" ncloc="206" classes="1" methods="8" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="139" coveredstatements="75" elements="147" coveredelements="78"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Mapper/NotificationMapper.php">
      <class name="MediaWiki\Extension\Notifications\Mapper\NotificationMapper" namespace="global">
        <metrics complexity="41" methods="13" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="239" coveredstatements="162" elements="252" coveredelements="166"/>
      </class>
      <line num="29" type="method" name="insert" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="30" type="stmt" count="2"/>
      <line num="32" type="stmt" count="2"/>
      <line num="34" type="stmt" count="2"/>
      <line num="35" type="stmt" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="37" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="39" type="stmt" count="2"/>
      <line num="40" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="44" type="stmt" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="47" type="stmt" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="52" type="stmt" count="2"/>
      <line num="60" type="method" name="extractQueryOffset" visibility="protected" complexity="3" crap="3.85" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="74" type="stmt" count="1"/>
      <line num="92" type="method" name="fetchUnreadByUser" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="132" type="method" name="fetchReadByUser" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="170" type="method" name="fetchByUser" visibility="public" complexity="4" crap="4.30" count="1"/>
      <line num="178" type="stmt" count="1"/>
      <line num="180" type="stmt" count="1"/>
      <line num="181" type="stmt" count="1"/>
      <line num="182" type="stmt" count="0"/>
      <line num="184" type="stmt" count="1"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="191" type="stmt" count="1"/>
      <line num="192" type="stmt" count="1"/>
      <line num="193" type="stmt" count="1"/>
      <line num="194" type="stmt" count="1"/>
      <line num="195" type="stmt" count="1"/>
      <line num="196" type="stmt" count="1"/>
      <line num="197" type="stmt" count="1"/>
      <line num="200" type="method" name="getIdsForTitles" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="221" type="method" name="fetchByUserInternal" visibility="protected" complexity="9" crap="9.89" count="1"/>
      <line num="229" type="stmt" count="1"/>
      <line num="231" type="stmt" count="1"/>
      <line num="232" type="stmt" count="1"/>
      <line num="241" type="stmt" count="1"/>
      <line num="242" type="stmt" count="1"/>
      <line num="243" type="stmt" count="1"/>
      <line num="244" type="stmt" count="1"/>
      <line num="245" type="stmt" count="1"/>
      <line num="247" type="stmt" count="1"/>
      <line num="250" type="stmt" count="1"/>
      <line num="252" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="255" type="stmt" count="0"/>
      <line num="258" type="stmt" count="1"/>
      <line num="259" type="stmt" count="1"/>
      <line num="260" type="stmt" count="1"/>
      <line num="261" type="stmt" count="1"/>
      <line num="262" type="stmt" count="1"/>
      <line num="263" type="stmt" count="1"/>
      <line num="264" type="stmt" count="1"/>
      <line num="265" type="stmt" count="1"/>
      <line num="266" type="stmt" count="1"/>
      <line num="269" type="stmt" count="1"/>
      <line num="270" type="stmt" count="1"/>
      <line num="272" type="stmt" count="1"/>
      <line num="273" type="stmt" count="1"/>
      <line num="274" type="stmt" count="1"/>
      <line num="276" type="stmt" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="283" type="stmt" count="1"/>
      <line num="284" type="stmt" count="1"/>
      <line num="285" type="stmt" count="1"/>
      <line num="288" type="stmt" count="1"/>
      <line num="298" type="method" name="fetchByUserEvents" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="299" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="302" type="stmt" count="0"/>
      <line num="303" type="stmt" count="0"/>
      <line num="304" type="stmt" count="0"/>
      <line num="305" type="stmt" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="307" type="stmt" count="0"/>
      <line num="308" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="310" type="stmt" count="0"/>
      <line num="312" type="stmt" count="0"/>
      <line num="313" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="316" type="stmt" count="0"/>
      <line num="326" type="method" name="fetchByUserOffset" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="327" type="stmt" count="1"/>
      <line num="328" type="stmt" count="1"/>
      <line num="329" type="stmt" count="1"/>
      <line num="330" type="stmt" count="1"/>
      <line num="331" type="stmt" count="1"/>
      <line num="332" type="stmt" count="1"/>
      <line num="333" type="stmt" count="1"/>
      <line num="334" type="stmt" count="1"/>
      <line num="335" type="stmt" count="1"/>
      <line num="336" type="stmt" count="1"/>
      <line num="337" type="stmt" count="1"/>
      <line num="338" type="stmt" count="1"/>
      <line num="339" type="stmt" count="1"/>
      <line num="341" type="stmt" count="1"/>
      <line num="342" type="stmt" count="1"/>
      <line num="344" type="stmt" count="1"/>
      <line num="355" type="method" name="deleteByUserAndAge" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="356" type="stmt" count="1"/>
      <line num="357" type="stmt" count="1"/>
      <line num="358" type="stmt" count="1"/>
      <line num="359" type="stmt" count="1"/>
      <line num="360" type="stmt" count="1"/>
      <line num="361" type="stmt" count="1"/>
      <line num="362" type="stmt" count="1"/>
      <line num="363" type="stmt" count="1"/>
      <line num="364" type="stmt" count="1"/>
      <line num="365" type="stmt" count="1"/>
      <line num="366" type="stmt" count="1"/>
      <line num="367" type="stmt" count="1"/>
      <line num="368" type="stmt" count="1"/>
      <line num="369" type="stmt" count="1"/>
      <line num="370" type="stmt" count="1"/>
      <line num="371" type="stmt" count="1"/>
      <line num="372" type="stmt" count="1"/>
      <line num="373" type="stmt" count="0"/>
      <line num="375" type="stmt" count="1"/>
      <line num="376" type="stmt" count="1"/>
      <line num="377" type="stmt" count="1"/>
      <line num="379" type="stmt" count="1"/>
      <line num="380" type="stmt" count="1"/>
      <line num="381" type="stmt" count="1"/>
      <line num="382" type="stmt" count="1"/>
      <line num="383" type="stmt" count="1"/>
      <line num="384" type="stmt" count="1"/>
      <line num="385" type="stmt" count="1"/>
      <line num="386" type="stmt" count="1"/>
      <line num="387" type="stmt" count="1"/>
      <line num="388" type="stmt" count="1"/>
      <line num="390" type="stmt" count="1"/>
      <line num="391" type="stmt" count="1"/>
      <line num="392" type="stmt" count="1"/>
      <line num="393" type="stmt" count="1"/>
      <line num="402" type="method" name="deleteByUserEventOffset" visibility="public" complexity="3" crap="3" count="1"/>
      <line num="404" type="stmt" count="1"/>
      <line num="405" type="stmt" count="1"/>
      <line num="406" type="stmt" count="1"/>
      <line num="407" type="stmt" count="1"/>
      <line num="408" type="stmt" count="1"/>
      <line num="409" type="stmt" count="1"/>
      <line num="410" type="stmt" count="1"/>
      <line num="412" type="stmt" count="1"/>
      <line num="413" type="stmt" count="1"/>
      <line num="414" type="stmt" count="1"/>
      <line num="415" type="stmt" count="1"/>
      <line num="416" type="stmt" count="1"/>
      <line num="417" type="stmt" count="1"/>
      <line num="418" type="stmt" count="1"/>
      <line num="419" type="stmt" count="1"/>
      <line num="420" type="stmt" count="1"/>
      <line num="421" type="stmt" count="1"/>
      <line num="422" type="stmt" count="1"/>
      <line num="424" type="stmt" count="1"/>
      <line num="425" type="stmt" count="1"/>
      <line num="426" type="stmt" count="1"/>
      <line num="427" type="stmt" count="1"/>
      <line num="429" type="stmt" count="1"/>
      <line num="430" type="stmt" count="1"/>
      <line num="431" type="stmt" count="1"/>
      <line num="432" type="stmt" count="1"/>
      <line num="433" type="stmt" count="1"/>
      <line num="434" type="stmt" count="1"/>
      <line num="435" type="stmt" count="1"/>
      <line num="436" type="stmt" count="1"/>
      <line num="440" type="stmt" count="1"/>
      <line num="442" type="stmt" count="1"/>
      <line num="443" type="stmt" count="1"/>
      <line num="445" type="stmt" count="1"/>
      <line num="454" type="method" name="deleteByEventIds" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="455" type="stmt" count="2"/>
      <line num="456" type="stmt" count="1"/>
      <line num="459" type="stmt" count="1"/>
      <line num="460" type="stmt" count="1"/>
      <line num="461" type="stmt" count="1"/>
      <line num="462" type="stmt" count="1"/>
      <line num="463" type="stmt" count="1"/>
      <line num="464" type="stmt" count="1"/>
      <line num="465" type="stmt" count="1"/>
      <line num="466" type="stmt" count="1"/>
      <line num="467" type="stmt" count="1"/>
      <line num="468" type="stmt" count="1"/>
      <line num="469" type="stmt" count="1"/>
      <line num="478" type="method" name="fetchUsersWithNotificationsForEvents" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="479" type="stmt" count="0"/>
      <line num="481" type="stmt" count="0"/>
      <line num="482" type="stmt" count="0"/>
      <line num="483" type="stmt" count="0"/>
      <line num="484" type="stmt" count="0"/>
      <line num="485" type="stmt" count="0"/>
      <line num="486" type="stmt" count="0"/>
      <line num="487" type="stmt" count="0"/>
      <line num="488" type="stmt" count="0"/>
      <line num="489" type="stmt" count="0"/>
      <line num="494" type="stmt" count="0"/>
      <metrics loc="495" ncloc="383" classes="1" methods="13" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="240" coveredstatements="162" elements="253" coveredelements="166"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Mapper/TargetPageMapper.php">
      <class name="MediaWiki\Extension\Notifications\Mapper\TargetPageMapper" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="8" elements="9" coveredelements="9"/>
      </class>
      <line num="27" type="method" name="insert" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="28" type="stmt" count="2"/>
      <line num="30" type="stmt" count="2"/>
      <line num="32" type="stmt" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="34" type="stmt" count="2"/>
      <line num="35" type="stmt" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <metrics loc="41" ncloc="28" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="8" coveredstatements="8" elements="9" coveredelements="9"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/MediaWikiEventIngress/PageEventIngress.php">
      <class name="MediaWiki\Extension\Notifications\MediaWikiEventIngress\PageEventIngress" namespace="global">
        <metrics complexity="22" methods="6" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="82" coveredstatements="56" elements="88" coveredelements="60"/>
      </class>
      <line num="32" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="11"/>
      <line num="41" type="stmt" count="11"/>
      <line num="43" type="method" name="handlePageLatestRevisionChangedEvent" visibility="public" complexity="8" crap="20.89" count="10"/>
      <line num="44" type="stmt" count="10"/>
      <line num="46" type="stmt" count="10"/>
      <line num="47" type="stmt" count="2"/>
      <line num="50" type="stmt" count="10"/>
      <line num="51" type="stmt" count="10"/>
      <line num="58" type="stmt" count="10"/>
      <line num="59" type="stmt" count="10"/>
      <line num="61" type="stmt" count="10"/>
      <line num="62" type="stmt" count="10"/>
      <line num="64" type="stmt" count="10"/>
      <line num="65" type="stmt" count="10"/>
      <line num="71" type="stmt" count="10"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="99" type="method" name="maybeSendThankYouEdit" visibility="private" complexity="5" crap="5.75" count="10"/>
      <line num="100" type="stmt" count="10"/>
      <line num="101" type="stmt" count="10"/>
      <line num="102" type="stmt" count="10"/>
      <line num="103" type="stmt" count="10"/>
      <line num="104" type="stmt" count="10"/>
      <line num="105" type="stmt" count="10"/>
      <line num="106" type="stmt" count="10"/>
      <line num="107" type="stmt" count="10"/>
      <line num="108" type="stmt" count="10"/>
      <line num="110" type="stmt" count="10"/>
      <line num="111" type="stmt" count="2"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="124" type="stmt" count="10"/>
      <line num="125" type="stmt" count="10"/>
      <line num="126" type="stmt" count="10"/>
      <line num="127" type="stmt" count="10"/>
      <line num="129" type="stmt" count="10"/>
      <line num="130" type="stmt" count="10"/>
      <line num="131" type="stmt" count="10"/>
      <line num="132" type="stmt" count="10"/>
      <line num="133" type="stmt" count="10"/>
      <line num="141" type="method" name="maybeSendEditedOtherUsersJsNotification" visibility="private" complexity="5" crap="5" count="10"/>
      <line num="144" type="stmt" count="10"/>
      <line num="146" type="stmt" count="10"/>
      <line num="147" type="stmt" count="7"/>
      <line num="150" type="stmt" count="3"/>
      <line num="152" type="stmt" count="3"/>
      <line num="153" type="stmt" count="1"/>
      <line num="156" type="stmt" count="2"/>
      <line num="157" type="stmt" count="2"/>
      <line num="158" type="stmt" count="2"/>
      <line num="161" type="stmt" count="1"/>
      <line num="162" type="stmt" count="1"/>
      <line num="163" type="stmt" count="1"/>
      <line num="164" type="stmt" count="1"/>
      <line num="165" type="stmt" count="1"/>
      <line num="166" type="stmt" count="1"/>
      <line num="167" type="stmt" count="1"/>
      <line num="168" type="stmt" count="1"/>
      <line num="169" type="stmt" count="1"/>
      <line num="170" type="stmt" count="1"/>
      <line num="173" type="method" name="handlePageDeletedEvent" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="174" type="stmt" count="1"/>
      <line num="175" type="stmt" count="1"/>
      <line num="184" type="method" name="getPredictedEditCount" visibility="private" complexity="2" crap="2" count="10"/>
      <line num="185" type="stmt" count="10"/>
      <line num="188" type="stmt" count="10"/>
      <metrics loc="191" ncloc="164" classes="1" methods="6" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="82" coveredstatements="56" elements="88" coveredelements="60"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Model/AbstractEntity.php">
      <class name="MediaWiki\Extension\Notifications\Model\AbstractEntity" namespace="global">
        <metrics complexity="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
      </class>
      <metrics loc="17" ncloc="10" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Model/Event.php">
      <class name="MediaWiki\Extension\Notifications\Model\Event" namespace="global">
        <metrics complexity="123" methods="45" coveredmethods="14" conditionals="0" coveredconditionals="0" statements="284" coveredstatements="152" elements="329" coveredelements="166"/>
      </class>
      <line num="105" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="5"/>
      <line num="106" type="stmt" count="5"/>
      <line num="108" type="method" name="__toString" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="135" type="method" name="create" visibility="public" complexity="13" crap="13.93" count="9"/>
      <line num="138" type="stmt" count="9"/>
      <line num="139" type="stmt" count="3"/>
      <line num="140" type="stmt" count="3"/>
      <line num="141" type="stmt" count="2"/>
      <line num="143" type="stmt" count="3"/>
      <line num="144" type="stmt" count="3"/>
      <line num="146" type="stmt" count="3"/>
      <line num="149" type="stmt" count="9"/>
      <line num="151" type="stmt" count="9"/>
      <line num="152" type="stmt" count="9"/>
      <line num="154" type="stmt" count="0"/>
      <line num="157" type="stmt" count="9"/>
      <line num="158" type="stmt" count="0"/>
      <line num="161" type="stmt" count="9"/>
      <line num="162" type="stmt" count="0"/>
      <line num="165" type="stmt" count="9"/>
      <line num="166" type="stmt" count="9"/>
      <line num="167" type="stmt" count="9"/>
      <line num="168" type="stmt" count="9"/>
      <line num="169" type="stmt" count="9"/>
      <line num="170" type="stmt" count="5"/>
      <line num="172" type="stmt" count="8"/>
      <line num="174" type="stmt" count="1"/>
      <line num="176" type="stmt" count="8"/>
      <line num="182" type="stmt" count="8"/>
      <line num="183" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="188" type="stmt" count="8"/>
      <line num="189" type="stmt" count="8"/>
      <line num="190" type="stmt" count="4"/>
      <line num="194" type="stmt" count="4"/>
      <line num="195" type="stmt" count="0"/>
      <line num="200" type="stmt" count="4"/>
      <line num="202" type="stmt" count="4"/>
      <line num="209" type="method" name="toDbArray" visibility="public" complexity="7" crap="8.05" count="3"/>
      <line num="210" type="stmt" count="3"/>
      <line num="211" type="stmt" count="3"/>
      <line num="212" type="stmt" count="3"/>
      <line num="213" type="stmt" count="3"/>
      <line num="214" type="stmt" count="3"/>
      <line num="215" type="stmt" count="3"/>
      <line num="216" type="stmt" count="0"/>
      <line num="218" type="stmt" count="3"/>
      <line num="219" type="stmt" count="3"/>
      <line num="220" type="stmt" count="0"/>
      <line num="222" type="stmt" count="3"/>
      <line num="226" type="stmt" count="3"/>
      <line num="227" type="stmt" count="1"/>
      <line num="228" type="stmt" count="2"/>
      <line num="229" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="237" type="stmt" count="3"/>
      <line num="246" type="method" name="newFromArray" visibility="public" complexity="6" crap="6.44" count="1"/>
      <line num="247" type="stmt" count="1"/>
      <line num="248" type="stmt" count="1"/>
      <line num="249" type="stmt" count="0"/>
      <line num="251" type="stmt" count="1"/>
      <line num="252" type="stmt" count="1"/>
      <line num="253" type="stmt" count="1"/>
      <line num="254" type="stmt" count="1"/>
      <line num="256" type="stmt" count="1"/>
      <line num="258" type="stmt" count="1"/>
      <line num="259" type="stmt" count="1"/>
      <line num="260" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="264" type="stmt" count="1"/>
      <line num="270" type="method" name="isEnabledEvent" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="272" type="stmt" count="4"/>
      <line num="281" type="method" name="acquireId" visibility="public" complexity="2" crap="2" count="3"/>
      <line num="282" type="stmt" count="3"/>
      <line num="283" type="stmt" count="3"/>
      <line num="285" type="stmt" count="3"/>
      <line num="291" type="method" name="insert" visibility="protected" complexity="4" crap="4.59" count="3"/>
      <line num="292" type="stmt" count="3"/>
      <line num="293" type="stmt" count="3"/>
      <line num="295" type="stmt" count="3"/>
      <line num="296" type="stmt" count="3"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="299" type="stmt" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="306" type="stmt" count="3"/>
      <line num="307" type="stmt" count="3"/>
      <line num="308" type="stmt" count="3"/>
      <line num="309" type="stmt" count="3"/>
      <line num="310" type="stmt" count="3"/>
      <line num="311" type="stmt" count="3"/>
      <line num="318" type="method" name="resolveTargetPages" visibility="protected" complexity="6" crap="26.83" count="3"/>
      <line num="319" type="stmt" count="3"/>
      <line num="320" type="stmt" count="3"/>
      <line num="322" type="stmt" count="0"/>
      <line num="323" type="stmt" count="0"/>
      <line num="325" type="stmt" count="0"/>
      <line num="326" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="330" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="334" type="stmt" count="0"/>
      <line num="338" type="stmt" count="0"/>
      <line num="347" type="method" name="loadFromRow" visibility="public" complexity="16" crap="51.69" count="2"/>
      <line num="348" type="stmt" count="2"/>
      <line num="349" type="stmt" count="2"/>
      <line num="351" type="stmt" count="2"/>
      <line num="352" type="stmt" count="2"/>
      <line num="353" type="stmt" count="0"/>
      <line num="355" type="stmt" count="2"/>
      <line num="359" type="stmt" count="2"/>
      <line num="360" type="stmt" count="0"/>
      <line num="362" type="stmt" count="0"/>
      <line num="363" type="stmt" count="0"/>
      <line num="364" type="stmt" count="0"/>
      <line num="365" type="stmt" count="0"/>
      <line num="366" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="370" type="stmt" count="2"/>
      <line num="371" type="stmt" count="2"/>
      <line num="372" type="stmt" count="2"/>
      <line num="373" type="stmt" count="1"/>
      <line num="375" type="stmt" count="0"/>
      <line num="376" type="stmt" count="0"/>
      <line num="377" type="stmt" count="0"/>
      <line num="378" type="stmt" count="0"/>
      <line num="379" type="stmt" count="0"/>
      <line num="380" type="stmt" count="0"/>
      <line num="381" type="stmt" count="0"/>
      <line num="382" type="stmt" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="386" type="stmt" count="2"/>
      <line num="387" type="stmt" count="2"/>
      <line num="389" type="stmt" count="2"/>
      <line num="390" type="stmt" count="2"/>
      <line num="392" type="stmt" count="2"/>
      <line num="394" type="stmt" count="2"/>
      <line num="395" type="stmt" count="2"/>
      <line num="396" type="stmt" count="0"/>
      <line num="403" type="stmt" count="0"/>
      <line num="404" type="stmt" count="0"/>
      <line num="406" type="stmt" count="0"/>
      <line num="408" type="stmt" count="0"/>
      <line num="414" type="stmt" count="2"/>
      <line num="415" type="stmt" count="2"/>
      <line num="417" type="stmt" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="420" type="stmt" count="0"/>
      <line num="422" type="stmt" count="2"/>
      <line num="423" type="stmt" count="1"/>
      <line num="424" type="stmt" count="1"/>
      <line num="426" type="stmt" count="2"/>
      <line num="427" type="stmt" count="1"/>
      <line num="428" type="stmt" count="1"/>
      <line num="431" type="stmt" count="2"/>
      <line num="440" type="method" name="loadFromID" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="441" type="stmt" count="0"/>
      <line num="442" type="stmt" count="0"/>
      <line num="443" type="stmt" count="0"/>
      <line num="444" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="449" type="stmt" count="0"/>
      <line num="450" type="stmt" count="0"/>
      <line num="451" type="stmt" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="456" type="stmt" count="0"/>
      <line num="457" type="stmt" count="0"/>
      <line num="460" type="stmt" count="0"/>
      <line num="469" type="method" name="newFromRow" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="470" type="stmt" count="2"/>
      <line num="471" type="stmt" count="2"/>
      <line num="472" type="stmt" count="2"/>
      <line num="473" type="stmt" count="2"/>
      <line num="482" type="method" name="newFromID" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="483" type="stmt" count="0"/>
      <line num="484" type="stmt" count="0"/>
      <line num="485" type="stmt" count="0"/>
      <line num="486" type="stmt" count="0"/>
      <line num="496" type="method" name="deserializeExtra" visibility="private" complexity="4" crap="4" count="7"/>
      <line num="497" type="stmt" count="7"/>
      <line num="498" type="stmt" count="6"/>
      <line num="499" type="stmt" count="6"/>
      <line num="501" type="stmt" count="4"/>
      <line num="508" type="method" name="serializeExtra" visibility="private" complexity="4" crap="4.59" count="4"/>
      <line num="509" type="stmt" count="4"/>
      <line num="510" type="stmt" count="0"/>
      <line num="512" type="stmt" count="4"/>
      <line num="513" type="stmt" count="4"/>
      <line num="514" type="stmt" count="0"/>
      <line num="516" type="stmt" count="4"/>
      <line num="530" type="method" name="userCan" visibility="public" complexity="7" crap="56" count="0"/>
      <line num="531" type="stmt" count="0"/>
      <line num="533" type="stmt" count="0"/>
      <line num="534" type="stmt" count="0"/>
      <line num="535" type="stmt" count="0"/>
      <line num="537" type="stmt" count="0"/>
      <line num="541" type="stmt" count="0"/>
      <line num="542" type="stmt" count="0"/>
      <line num="545" type="stmt" count="0"/>
      <line num="548" type="stmt" count="0"/>
      <line num="549" type="stmt" count="0"/>
      <line num="550" type="stmt" count="0"/>
      <line num="552" type="stmt" count="0"/>
      <line num="554" type="stmt" count="0"/>
      <line num="557" type="stmt" count="0"/>
      <line num="566" type="method" name="getId" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="567" type="stmt" count="4"/>
      <line num="573" type="method" name="getTimestamp" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="574" type="stmt" count="3"/>
      <line num="580" type="method" name="getType" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="581" type="stmt" count="4"/>
      <line num="587" type="method" name="getExtra" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="588" type="stmt" count="0"/>
      <line num="596" type="method" name="getExtraParam" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="597" type="stmt" count="4"/>
      <line num="603" type="method" name="getAgent" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="604" type="stmt" count="4"/>
      <line num="615" type="method" name="canNotifyAgent" visibility="public" complexity="2" crap="2" count="4"/>
      <line num="617" type="stmt" count="4"/>
      <line num="618" type="stmt" count="4"/>
      <line num="619" type="stmt" count="4"/>
      <line num="626" type="method" name="getTitle" visibility="public" complexity="8" crap="11.76" count="3"/>
      <line num="627" type="stmt" count="3"/>
      <line num="628" type="stmt" count="1"/>
      <line num="630" type="stmt" count="3"/>
      <line num="631" type="stmt" count="1"/>
      <line num="632" type="stmt" count="1"/>
      <line num="633" type="stmt" count="1"/>
      <line num="634" type="stmt" count="0"/>
      <line num="635" type="stmt" count="0"/>
      <line num="637" type="stmt" count="1"/>
      <line num="638" type="stmt" count="1"/>
      <line num="639" type="stmt" count="1"/>
      <line num="642" type="stmt" count="2"/>
      <line num="643" type="stmt" count="0"/>
      <line num="644" type="stmt" count="0"/>
      <line num="645" type="stmt" count="0"/>
      <line num="646" type="stmt" count="0"/>
      <line num="647" type="stmt" count="0"/>
      <line num="649" type="stmt" count="2"/>
      <line num="655" type="method" name="getPageId" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="656" type="stmt" count="0"/>
      <line num="662" type="method" name="getRevision" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="663" type="stmt" count="0"/>
      <line num="664" type="stmt" count="0"/>
      <line num="667" type="stmt" count="0"/>
      <line num="668" type="stmt" count="0"/>
      <line num="669" type="stmt" count="0"/>
      <line num="670" type="stmt" count="0"/>
      <line num="671" type="stmt" count="0"/>
      <line num="672" type="stmt" count="0"/>
      <line num="675" type="stmt" count="0"/>
      <line num="676" type="stmt" count="0"/>
      <line num="677" type="stmt" count="0"/>
      <line num="680" type="stmt" count="0"/>
      <line num="687" type="method" name="getCategory" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="688" type="stmt" count="0"/>
      <line num="695" type="method" name="getSection" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="696" type="stmt" count="0"/>
      <line num="703" type="method" name="getUseJobQueue" visibility="public" complexity="2" crap="2.15" count="1"/>
      <line num="705" type="stmt" count="1"/>
      <line num="706" type="stmt" count="0"/>
      <line num="709" type="stmt" count="1"/>
      <line num="715" type="method" name="setType" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="716" type="stmt" count="0"/>
      <line num="719" type="method" name="setAgent" visibility="public" complexity="3" crap="3" count="5"/>
      <line num="720" type="stmt" count="5"/>
      <line num="721" type="stmt" count="1"/>
      <line num="722" type="stmt" count="1"/>
      <line num="723" type="stmt" count="1"/>
      <line num="724" type="stmt" count="1"/>
      <line num="725" type="stmt" count="1"/>
      <line num="726" type="stmt" count="1"/>
      <line num="727" type="stmt" count="1"/>
      <line num="730" type="stmt" count="4"/>
      <line num="731" type="stmt" count="4"/>
      <line num="734" type="method" name="setTitle" visibility="public" complexity="2" crap="2.09" count="1"/>
      <line num="735" type="stmt" count="1"/>
      <line num="736" type="stmt" count="1"/>
      <line num="741" type="stmt" count="1"/>
      <line num="742" type="stmt" count="1"/>
      <line num="743" type="stmt" count="1"/>
      <line num="745" type="stmt" count="0"/>
      <line num="746" type="stmt" count="0"/>
      <line num="754" type="method" name="setExtra" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="755" type="stmt" count="0"/>
      <line num="764" type="method" name="getLinkMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="766" type="stmt" count="0"/>
      <line num="767" type="stmt" count="0"/>
      <line num="776" type="method" name="getLinkDestination" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="778" type="stmt" count="0"/>
      <line num="779" type="stmt" count="0"/>
      <line num="785" type="method" name="getBundleHash" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="786" type="stmt" count="0"/>
      <line num="792" type="method" name="setBundleHash" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="793" type="stmt" count="0"/>
      <line num="796" type="method" name="isDeleted" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="797" type="stmt" count="1"/>
      <line num="800" type="method" name="setBundledEvents" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="801" type="stmt" count="0"/>
      <line num="804" type="method" name="getBundledEvents" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="805" type="stmt" count="0"/>
      <line num="811" type="method" name="canBeBundled" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="812" type="stmt" count="0"/>
      <line num="818" type="method" name="getBundlingKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="819" type="stmt" count="0"/>
      <line num="825" type="method" name="setBundledElements" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="826" type="stmt" count="0"/>
      <line num="832" type="method" name="getSortingKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="833" type="stmt" count="0"/>
      <line num="841" type="method" name="selectFields" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="842" type="stmt" count="2"/>
      <line num="843" type="stmt" count="2"/>
      <line num="844" type="stmt" count="2"/>
      <line num="845" type="stmt" count="2"/>
      <line num="846" type="stmt" count="2"/>
      <line num="847" type="stmt" count="2"/>
      <line num="848" type="stmt" count="2"/>
      <line num="849" type="stmt" count="2"/>
      <line num="850" type="stmt" count="2"/>
      <line num="855" type="stmt" count="0"/>
      <metrics loc="856" ncloc="589" classes="1" methods="45" coveredmethods="14" conditionals="0" coveredconditionals="0" statements="285" coveredstatements="152" elements="330" coveredelements="166"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Model/Notification.php">
      <class name="MediaWiki\Extension\Notifications\Model\Notification" namespace="global">
        <metrics complexity="24" methods="18" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="59" coveredstatements="17" elements="77" coveredelements="22"/>
      </class>
      <line num="45" type="method" name="__construct" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="57" type="method" name="insert" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="96" type="method" name="newFromRow" visibility="public" complexity="3" crap="3.00" count="2"/>
      <line num="97" type="stmt" count="2"/>
      <line num="98" type="stmt" count="1"/>
      <line num="100" type="stmt" count="1"/>
      <line num="102" type="stmt" count="1"/>
      <line num="103" type="stmt" count="0"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="109" type="stmt" count="1"/>
      <line num="111" type="stmt" count="1"/>
      <line num="113" type="stmt" count="1"/>
      <line num="114" type="stmt" count="1"/>
      <line num="115" type="stmt" count="1"/>
      <line num="117" type="stmt" count="1"/>
      <line num="124" type="method" name="toDbArray" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="137" type="method" name="getEvent" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="138" type="stmt" count="1"/>
      <line num="145" type="method" name="getUser" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="152" type="method" name="getTimestamp" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="153" type="stmt" count="1"/>
      <line num="159" type="method" name="getReadTimestamp" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="160" type="stmt" count="1"/>
      <line num="163" type="method" name="isRead" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="170" type="method" name="getBundleHash" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="180" type="method" name="getTargetPages" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="181" type="stmt" count="1"/>
      <line num="184" type="method" name="setBundledNotifications" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="188" type="method" name="getBundledNotifications" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="195" type="method" name="canBeBundled" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="202" type="method" name="getBundlingKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="209" type="method" name="setBundledElements" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="216" type="method" name="getSortingKey" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="225" type="method" name="selectFields" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <metrics loc="237" ncloc="161" classes="1" methods="18" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="60" coveredstatements="17" elements="78" coveredelements="22"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Model/TargetPage.php">
      <class name="MediaWiki\Extension\Notifications\Model\TargetPage" namespace="global">
        <metrics complexity="17" methods="9" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="26" elements="47" coveredelements="29"/>
      </class>
      <line num="44" type="method" name="__construct" visibility="protected" complexity="1" crap="1" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="54" type="method" name="create" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="75" type="method" name="newFromRow" visibility="public" complexity="5" crap="5.01" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="77" type="stmt" count="2"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="80" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <line num="82" type="stmt" count="1"/>
      <line num="85" type="stmt" count="1"/>
      <line num="86" type="stmt" count="1"/>
      <line num="87" type="stmt" count="1"/>
      <line num="88" type="stmt" count="1"/>
      <line num="89" type="stmt" count="0"/>
      <line num="92" type="stmt" count="1"/>
      <line num="98" type="method" name="getTitle" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="109" type="method" name="getPageId" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="116" type="method" name="getEvent" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="127" type="method" name="getEventId" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="134" type="method" name="getEventType" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="146" type="method" name="toDbArray" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="147" type="stmt" count="1"/>
      <line num="148" type="stmt" count="1"/>
      <line num="149" type="stmt" count="1"/>
      <line num="150" type="stmt" count="1"/>
      <metrics loc="153" ncloc="97" classes="1" methods="9" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="26" elements="47" coveredelements="29"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/NotifUser.php">
      <class name="MediaWiki\Extension\Notifications\NotifUser" namespace="global">
        <metrics complexity="68" methods="28" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="256" coveredstatements="52" elements="284" coveredelements="56"/>
      </class>
      <line num="66" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="76" type="stmt" count="4"/>
      <line num="83" type="method" name="newFromUser" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="84" type="stmt" count="2"/>
      <line num="85" type="stmt" count="1"/>
      <line num="87" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="94" type="stmt" count="2"/>
      <line num="95" type="stmt" count="2"/>
      <line num="96" type="stmt" count="2"/>
      <line num="97" type="stmt" count="2"/>
      <line num="98" type="stmt" count="2"/>
      <line num="99" type="stmt" count="2"/>
      <line num="100" type="stmt" count="2"/>
      <line num="101" type="stmt" count="2"/>
      <line num="102" type="stmt" count="2"/>
      <line num="108" type="method" name="clearUserTalkNotifications" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="121" type="method" name="getMessageCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="130" type="method" name="getAlertCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="141" type="method" name="getLocalNotificationCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="156" type="method" name="getNotificationCount" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="172" type="method" name="getLastUnreadAlertTime" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="181" type="method" name="getLastUnreadMessageTime" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="182" type="stmt" count="0"/>
      <line num="195" type="method" name="getLastUnreadNotificationTime" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="211" type="method" name="resolveGlobalParam" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="228" type="method" name="markRead" visibility="public" complexity="6" crap="12.50" count="2"/>
      <line num="229" type="stmt" count="2"/>
      <line num="230" type="stmt" count="2"/>
      <line num="231" type="stmt" count="2"/>
      <line num="234" type="stmt" count="2"/>
      <line num="235" type="stmt" count="2"/>
      <line num="237" type="stmt" count="2"/>
      <line num="241" type="stmt" count="2"/>
      <line num="242" type="stmt" count="2"/>
      <line num="243" type="stmt" count="2"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="252" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="255" type="stmt" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="261" type="stmt" count="2"/>
      <line num="270" type="method" name="markUnRead" visibility="public" complexity="6" crap="42" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="276" type="stmt" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="283" type="stmt" count="0"/>
      <line num="284" type="stmt" count="0"/>
      <line num="285" type="stmt" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="288" type="stmt" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="293" type="stmt" count="0"/>
      <line num="294" type="stmt" count="0"/>
      <line num="295" type="stmt" count="0"/>
      <line num="296" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="303" type="stmt" count="0"/>
      <line num="316" type="method" name="markAllRead" visibility="public" complexity="5" crap="5.04" count="1"/>
      <line num="317" type="stmt" count="1"/>
      <line num="318" type="stmt" count="0"/>
      <line num="324" type="stmt" count="1"/>
      <line num="325" type="stmt" count="1"/>
      <line num="328" type="stmt" count="1"/>
      <line num="329" type="stmt" count="1"/>
      <line num="331" type="stmt" count="1"/>
      <line num="333" type="stmt" count="1"/>
      <line num="334" type="stmt" count="1"/>
      <line num="337" type="stmt" count="1"/>
      <line num="338" type="stmt" count="1"/>
      <line num="340" type="stmt" count="0"/>
      <line num="341" type="stmt" count="1"/>
      <line num="342" type="stmt" count="1"/>
      <line num="344" type="stmt" count="1"/>
      <line num="345" type="stmt" count="1"/>
      <line num="353" type="stmt" count="1"/>
      <line num="363" type="method" name="markReadForeign" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="364" type="stmt" count="0"/>
      <line num="365" type="stmt" count="0"/>
      <line num="366" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="369" type="stmt" count="0"/>
      <line num="370" type="stmt" count="0"/>
      <line num="371" type="stmt" count="0"/>
      <line num="372" type="stmt" count="0"/>
      <line num="373" type="stmt" count="0"/>
      <line num="374" type="stmt" count="0"/>
      <line num="385" type="method" name="getForeignNotificationInfo" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="387" type="stmt" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="389" type="stmt" count="0"/>
      <line num="390" type="stmt" count="0"/>
      <line num="391" type="stmt" count="0"/>
      <line num="392" type="stmt" count="0"/>
      <line num="393" type="stmt" count="0"/>
      <line num="394" type="stmt" count="0"/>
      <line num="395" type="stmt" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="397" type="stmt" count="0"/>
      <line num="398" type="stmt" count="0"/>
      <line num="399" type="stmt" count="0"/>
      <line num="401" type="stmt" count="0"/>
      <line num="402" type="stmt" count="0"/>
      <line num="403" type="stmt" count="0"/>
      <line num="404" type="stmt" count="0"/>
      <line num="407" type="stmt" count="0"/>
      <line num="418" type="method" name="resetNotificationCount" visibility="public" complexity="7" crap="33.84" count="2"/>
      <line num="422" type="stmt" count="2"/>
      <line num="423" type="stmt" count="2"/>
      <line num="426" type="stmt" count="2"/>
      <line num="428" type="stmt" count="2"/>
      <line num="430" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="432" type="stmt" count="0"/>
      <line num="435" type="stmt" count="0"/>
      <line num="436" type="stmt" count="0"/>
      <line num="438" type="stmt" count="0"/>
      <line num="440" type="stmt" count="0"/>
      <line num="441" type="stmt" count="0"/>
      <line num="442" type="stmt" count="0"/>
      <line num="443" type="stmt" count="0"/>
      <line num="444" type="stmt" count="0"/>
      <line num="445" type="stmt" count="0"/>
      <line num="446" type="stmt" count="0"/>
      <line num="447" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="455" type="stmt" count="0"/>
      <line num="456" type="stmt" count="0"/>
      <line num="469" type="method" name="getGlobalUpdateTime" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="470" type="stmt" count="0"/>
      <line num="471" type="stmt" count="0"/>
      <line num="472" type="stmt" count="0"/>
      <line num="474" type="stmt" count="0"/>
      <line num="502" type="method" name="getCountsAndTimestamps" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="503" type="stmt" count="0"/>
      <line num="504" type="stmt" count="0"/>
      <line num="505" type="stmt" count="0"/>
      <line num="506" type="stmt" count="0"/>
      <line num="507" type="stmt" count="0"/>
      <line num="508" type="stmt" count="0"/>
      <line num="509" type="stmt" count="0"/>
      <line num="510" type="stmt" count="0"/>
      <line num="512" type="stmt" count="0"/>
      <line num="514" type="stmt" count="0"/>
      <line num="515" type="stmt" count="0"/>
      <line num="516" type="stmt" count="0"/>
      <line num="519" type="stmt" count="0"/>
      <line num="520" type="stmt" count="0"/>
      <line num="521" type="stmt" count="0"/>
      <line num="522" type="stmt" count="0"/>
      <line num="523" type="stmt" count="0"/>
      <line num="524" type="stmt" count="0"/>
      <line num="525" type="stmt" count="0"/>
      <line num="526" type="stmt" count="0"/>
      <line num="529" type="stmt" count="0"/>
      <line num="531" type="stmt" count="0"/>
      <line num="539" type="method" name="computeLocalCountsAndTimestamps" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="540" type="stmt" count="0"/>
      <line num="541" type="stmt" count="0"/>
      <line num="542" type="stmt" count="0"/>
      <line num="544" type="stmt" count="0"/>
      <line num="545" type="stmt" count="0"/>
      <line num="546" type="stmt" count="0"/>
      <line num="547" type="stmt" count="0"/>
      <line num="548" type="stmt" count="0"/>
      <line num="549" type="stmt" count="0"/>
      <line num="551" type="stmt" count="0"/>
      <line num="552" type="stmt" count="0"/>
      <line num="553" type="stmt" count="0"/>
      <line num="554" type="stmt" count="0"/>
      <line num="555" type="stmt" count="0"/>
      <line num="556" type="stmt" count="0"/>
      <line num="557" type="stmt" count="0"/>
      <line num="559" type="stmt" count="0"/>
      <line num="560" type="stmt" count="0"/>
      <line num="561" type="stmt" count="0"/>
      <line num="562" type="stmt" count="0"/>
      <line num="563" type="stmt" count="0"/>
      <line num="564" type="stmt" count="0"/>
      <line num="565" type="stmt" count="0"/>
      <line num="566" type="stmt" count="0"/>
      <line num="567" type="stmt" count="0"/>
      <line num="568" type="stmt" count="0"/>
      <line num="569" type="stmt" count="0"/>
      <line num="571" type="stmt" count="0"/>
      <line num="573" type="stmt" count="0"/>
      <line num="574" type="stmt" count="0"/>
      <line num="576" type="stmt" count="0"/>
      <line num="577" type="stmt" count="0"/>
      <line num="578" type="stmt" count="0"/>
      <line num="588" type="method" name="computeGlobalCountsAndTimestamps" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="589" type="stmt" count="0"/>
      <line num="590" type="stmt" count="0"/>
      <line num="591" type="stmt" count="0"/>
      <line num="592" type="stmt" count="0"/>
      <line num="593" type="stmt" count="0"/>
      <line num="594" type="stmt" count="0"/>
      <line num="595" type="stmt" count="0"/>
      <line num="596" type="stmt" count="0"/>
      <line num="598" type="stmt" count="0"/>
      <line num="599" type="stmt" count="0"/>
      <line num="600" type="stmt" count="0"/>
      <line num="601" type="stmt" count="0"/>
      <line num="602" type="stmt" count="0"/>
      <line num="603" type="stmt" count="0"/>
      <line num="604" type="stmt" count="0"/>
      <line num="605" type="stmt" count="0"/>
      <line num="607" type="stmt" count="0"/>
      <line num="608" type="stmt" count="0"/>
      <line num="609" type="stmt" count="0"/>
      <line num="616" type="method" name="getEmailFormat" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="619" type="stmt" count="1"/>
      <line num="620" type="stmt" count="1"/>
      <line num="623" type="stmt" count="1"/>
      <line num="632" type="method" name="getMemcKey" visibility="protected" complexity="1" crap="1" count="2"/>
      <line num="634" type="stmt" count="2"/>
      <line num="643" type="method" name="getGlobalMemcKey" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="645" type="stmt" count="0"/>
      <line num="646" type="stmt" count="0"/>
      <line num="647" type="stmt" count="0"/>
      <line num="648" type="stmt" count="0"/>
      <line num="649" type="stmt" count="0"/>
      <line num="651" type="stmt" count="0"/>
      <line num="659" type="method" name="getForeignNotifications" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="660" type="stmt" count="0"/>
      <line num="661" type="stmt" count="0"/>
      <line num="663" type="stmt" count="0"/>
      <line num="671" type="method" name="getForeignCount" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="672" type="stmt" count="0"/>
      <line num="673" type="stmt" count="0"/>
      <line num="674" type="stmt" count="0"/>
      <line num="683" type="method" name="getForeignTimestamp" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="684" type="stmt" count="0"/>
      <line num="694" type="method" name="capNotificationCount" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="695" type="stmt" count="0"/>
      <metrics loc="698" ncloc="453" classes="1" methods="28" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="256" coveredstatements="52" elements="284" coveredelements="56"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Notifications/RecentChangeNotificationMiddleware.php">
      <class name="MediaWiki\Extension\Notifications\Notifications\RecentChangeNotificationMiddleware" namespace="global">
        <metrics complexity="18" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="30" elements="35" coveredelements="33"/>
      </class>
      <line num="16" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="21" type="stmt" count="4"/>
      <line num="23" type="method" name="shouldKeepUserTalkNotification" visibility="private" complexity="2" crap="2" count="4"/>
      <line num="28" type="stmt" count="4"/>
      <line num="30" type="stmt" count="3"/>
      <line num="33" type="stmt" count="1"/>
      <line num="40" type="method" name="shouldKeepWatchlistNotification" visibility="private" complexity="9" crap="9.01" count="4"/>
      <line num="41" type="stmt" count="4"/>
      <line num="42" type="stmt" count="4"/>
      <line num="45" type="stmt" count="1"/>
      <line num="49" type="stmt" count="3"/>
      <line num="50" type="stmt" count="3"/>
      <line num="51" type="stmt" count="3"/>
      <line num="52" type="stmt" count="3"/>
      <line num="53" type="stmt" count="3"/>
      <line num="56" type="stmt" count="3"/>
      <line num="57" type="stmt" count="1"/>
      <line num="58" type="stmt" count="2"/>
      <line num="59" type="stmt" count="0"/>
      <line num="63" type="stmt" count="3"/>
      <line num="64" type="stmt" count="3"/>
      <line num="67" type="stmt" count="1"/>
      <line num="71" type="stmt" count="3"/>
      <line num="73" type="stmt" count="1"/>
      <line num="75" type="stmt" count="2"/>
      <line num="78" type="method" name="filter" visibility="protected" complexity="6" crap="6" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="4"/>
      <line num="81" type="stmt" count="4"/>
      <line num="82" type="stmt" count="4"/>
      <line num="83" type="stmt" count="4"/>
      <line num="85" type="stmt" count="4"/>
      <line num="87" type="stmt" count="4"/>
      <line num="88" type="stmt" count="4"/>
      <line num="92" type="stmt" count="4"/>
      <metrics loc="96" ncloc="79" classes="1" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="30" elements="35" coveredelements="33"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Notifications/UserBlockNotification.php">
      <class name="MediaWiki\Extension\Notifications\Notifications\UserBlockNotification" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="23" elements="25" coveredelements="25"/>
      </class>
      <line num="12" type="method" name="newForBlock" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="18" type="stmt" count="1"/>
      <line num="19" type="stmt" count="1"/>
      <line num="20" type="stmt" count="1"/>
      <line num="21" type="stmt" count="1"/>
      <line num="22" type="stmt" count="1"/>
      <line num="23" type="stmt" count="1"/>
      <line num="24" type="stmt" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="27" type="stmt" count="1"/>
      <line num="28" type="stmt" count="1"/>
      <line num="29" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="34" type="method" name="newForUnblock" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="41" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <metrics loc="49" ncloc="49" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="23" coveredstatements="23" elements="25" coveredelements="25"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Notifications/UserRightsNotification.php">
      <class name="MediaWiki\Extension\Notifications\Notifications\UserRightsNotification" namespace="global">
        <metrics complexity="4" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="0" elements="16" coveredelements="0"/>
      </class>
      <line num="24" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="45" type="method" name="newForExpiryChanged" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="63" type="method" name="newForRightsChange" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="72" type="method" name="getAgent" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <metrics loc="77" ncloc="44" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="12" coveredstatements="0" elements="16" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Notifier.php">
      <class name="MediaWiki\Extension\Notifications\Notifier" namespace="global">
        <metrics complexity="44" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="109" coveredstatements="54" elements="113" coveredelements="54"/>
      </class>
      <line num="23" type="method" name="notifyWithNotification" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="43" type="method" name="notifyWithEmail" visibility="public" complexity="28" crap="49.51" count="10"/>
      <line num="45" type="stmt" count="10"/>
      <line num="46" type="stmt" count="10"/>
      <line num="50" type="stmt" count="10"/>
      <line num="52" type="stmt" count="10"/>
      <line num="54" type="stmt" count="10"/>
      <line num="56" type="stmt" count="3"/>
      <line num="59" type="stmt" count="7"/>
      <line num="60" type="stmt" count="7"/>
      <line num="62" type="stmt" count="2"/>
      <line num="68" type="stmt" count="5"/>
      <line num="69" type="stmt" count="5"/>
      <line num="70" type="stmt" count="1"/>
      <line num="73" type="stmt" count="4"/>
      <line num="74" type="stmt" count="4"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="83" type="stmt" count="4"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="96" type="stmt" count="4"/>
      <line num="99" type="stmt" count="0"/>
      <line num="102" type="stmt" count="4"/>
      <line num="104" type="stmt" count="4"/>
      <line num="105" type="stmt" count="0"/>
      <line num="108" type="stmt" count="4"/>
      <line num="109" type="stmt" count="4"/>
      <line num="111" type="stmt" count="4"/>
      <line num="114" type="stmt" count="3"/>
      <line num="116" type="stmt" count="3"/>
      <line num="121" type="stmt" count="3"/>
      <line num="122" type="stmt" count="3"/>
      <line num="124" type="stmt" count="0"/>
      <line num="126" type="stmt" count="3"/>
      <line num="127" type="stmt" count="0"/>
      <line num="131" type="stmt" count="3"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="144" type="stmt" count="3"/>
      <line num="145" type="stmt" count="3"/>
      <line num="146" type="stmt" count="3"/>
      <line num="147" type="stmt" count="3"/>
      <line num="148" type="stmt" count="3"/>
      <line num="149" type="stmt" count="3"/>
      <line num="152" type="stmt" count="3"/>
      <line num="153" type="stmt" count="3"/>
      <line num="154" type="stmt" count="3"/>
      <line num="155" type="stmt" count="0"/>
      <line num="157" type="stmt" count="3"/>
      <line num="158" type="stmt" count="3"/>
      <line num="159" type="stmt" count="3"/>
      <line num="161" type="stmt" count="3"/>
      <line num="162" type="stmt" count="3"/>
      <line num="164" type="stmt" count="3"/>
      <line num="165" type="stmt" count="3"/>
      <line num="168" type="stmt" count="4"/>
      <line num="182" type="method" name="getBundleRules" visibility="public" complexity="11" crap="132" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="216" type="method" name="generateEmail" visibility="private" complexity="3" crap="3.79" count="3"/>
      <line num="217" type="stmt" count="3"/>
      <line num="218" type="stmt" count="3"/>
      <line num="219" type="stmt" count="3"/>
      <line num="220" type="stmt" count="3"/>
      <line num="221" type="stmt" count="3"/>
      <line num="222" type="stmt" count="3"/>
      <line num="223" type="stmt" count="3"/>
      <line num="224" type="stmt" count="3"/>
      <line num="225" type="stmt" count="0"/>
      <line num="228" type="stmt" count="3"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="238" type="stmt" count="3"/>
      <line num="242" type="stmt" count="0"/>
      <metrics loc="243" ncloc="185" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="110" coveredstatements="54" elements="114" coveredelements="54"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/OOUI/LabelIconWidget.php">
      <class name="MediaWiki\Extension\Notifications\OOUI\LabelIconWidget" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="0" elements="14" coveredelements="0"/>
      </class>
      <line num="25" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <metrics loc="45" ncloc="36" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="0" elements="14" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/OnWikiList.php">
      <class name="MediaWiki\Extension\Notifications\OnWikiList" namespace="global">
        <metrics complexity="14" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="27" elements="32" coveredelements="29"/>
      </class>
      <line num="31" type="method" name="__construct" visibility="public" complexity="5" crap="5" count="6"/>
      <line num="36" type="stmt" count="6"/>
      <line num="37" type="stmt" count="1"/>
      <line num="39" type="stmt" count="5"/>
      <line num="40" type="stmt" count="5"/>
      <line num="41" type="stmt" count="4"/>
      <line num="48" type="method" name="getValues" visibility="public" complexity="4" crap="4" count="5"/>
      <line num="49" type="stmt" count="5"/>
      <line num="50" type="stmt" count="2"/>
      <line num="52" type="stmt" count="4"/>
      <line num="53" type="stmt" count="4"/>
      <line num="55" type="stmt" count="3"/>
      <line num="56" type="stmt" count="3"/>
      <line num="57" type="stmt" count="3"/>
      <line num="58" type="stmt" count="3"/>
      <line num="59" type="stmt" count="3"/>
      <line num="60" type="stmt" count="3"/>
      <line num="61" type="stmt" count="3"/>
      <line num="62" type="stmt" count="3"/>
      <line num="63" type="stmt" count="3"/>
      <line num="64" type="stmt" count="3"/>
      <line num="68" type="method" name="loadValues" visibility="private" complexity="5" crap="5.20" count="5"/>
      <line num="69" type="stmt" count="5"/>
      <line num="70" type="stmt" count="1"/>
      <line num="73" type="stmt" count="4"/>
      <line num="74" type="stmt" count="4"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="stmt" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="4"/>
      <line num="81" type="stmt" count="0"/>
      <line num="83" type="stmt" count="4"/>
      <metrics loc="86" ncloc="67" classes="1" methods="3" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="27" elements="32" coveredelements="29"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/Api/ApiEchoPushSubscriptions.php">
      <class name="MediaWiki\Extension\Notifications\Push\Api\ApiEchoPushSubscriptions" namespace="global">
        <metrics complexity="11" methods="9" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="21" elements="48" coveredelements="25"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="37" type="method" name="execute" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="51" type="method" name="getModuleManager" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="69" type="method" name="getAllowedParams" visibility="protected" complexity="1" crap="1" count="1"/>
      <line num="70" type="stmt" count="1"/>
      <line num="71" type="stmt" count="1"/>
      <line num="72" type="stmt" count="1"/>
      <line num="73" type="stmt" count="1"/>
      <line num="74" type="stmt" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="82" type="method" name="checkLoginState" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="92" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="97" type="method" name="isWriteMode" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="102" type="method" name="needsToken" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="103" type="stmt" count="1"/>
      <line num="107" type="method" name="isInternal" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <metrics loc="113" ncloc="94" classes="1" methods="9" coveredmethods="4" conditionals="0" coveredconditionals="0" statements="39" coveredstatements="21" elements="48" coveredelements="25"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/Api/ApiEchoPushSubscriptionsCreate.php">
      <class name="MediaWiki\Extension\Notifications\Push\Api\ApiEchoPushSubscriptionsCreate" namespace="global">
        <metrics complexity="12" methods="9" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="31" elements="47" coveredelements="36"/>
      </class>
      <line num="30" type="method" name="factory" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="31" type="stmt" count="4"/>
      <line num="32" type="stmt" count="4"/>
      <line num="33" type="stmt" count="4"/>
      <line num="34" type="stmt" count="4"/>
      <line num="37" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="42" type="stmt" count="4"/>
      <line num="49" type="method" name="execute" visibility="public" complexity="4" crap="4" count="4"/>
      <line num="50" type="stmt" count="4"/>
      <line num="51" type="stmt" count="4"/>
      <line num="52" type="stmt" count="4"/>
      <line num="54" type="stmt" count="4"/>
      <line num="55" type="stmt" count="2"/>
      <line num="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="1"/>
      <line num="60" type="stmt" count="3"/>
      <line num="61" type="stmt" count="3"/>
      <line num="62" type="stmt" count="3"/>
      <line num="63" type="stmt" count="1"/>
      <line num="70" type="method" name="getParent" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="75" type="method" name="getAllowedParams" visibility="protected" complexity="1" crap="1" count="4"/>
      <line num="76" type="stmt" count="4"/>
      <line num="77" type="stmt" count="4"/>
      <line num="78" type="stmt" count="4"/>
      <line num="79" type="stmt" count="4"/>
      <line num="80" type="stmt" count="4"/>
      <line num="81" type="stmt" count="4"/>
      <line num="82" type="stmt" count="4"/>
      <line num="83" type="stmt" count="4"/>
      <line num="84" type="stmt" count="4"/>
      <line num="85" type="stmt" count="4"/>
      <line num="86" type="stmt" count="4"/>
      <line num="87" type="stmt" count="4"/>
      <line num="88" type="stmt" count="4"/>
      <line num="89" type="stmt" count="4"/>
      <line num="93" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="103" type="method" name="isWriteMode" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="108" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="113" type="method" name="isInternal" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <metrics loc="119" ncloc="92" classes="1" methods="9" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="38" coveredstatements="31" elements="47" coveredelements="36"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/Api/ApiEchoPushSubscriptionsDelete.php">
      <class name="MediaWiki\Extension\Notifications\Push\Api\ApiEchoPushSubscriptionsDelete" namespace="global">
        <metrics complexity="12" methods="9" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="23" elements="39" coveredelements="28"/>
      </class>
      <line num="24" type="method" name="factory" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="25" type="stmt" count="6"/>
      <line num="26" type="stmt" count="6"/>
      <line num="27" type="stmt" count="6"/>
      <line num="28" type="stmt" count="6"/>
      <line num="31" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="6"/>
      <line num="36" type="stmt" count="6"/>
      <line num="43" type="method" name="execute" visibility="public" complexity="4" crap="4" count="6"/>
      <line num="44" type="stmt" count="6"/>
      <line num="45" type="stmt" count="6"/>
      <line num="47" type="stmt" count="6"/>
      <line num="48" type="stmt" count="1"/>
      <line num="52" type="stmt" count="5"/>
      <line num="53" type="stmt" count="4"/>
      <line num="54" type="stmt" count="4"/>
      <line num="57" type="stmt" count="5"/>
      <line num="58" type="stmt" count="5"/>
      <line num="59" type="stmt" count="2"/>
      <line num="66" type="method" name="getParent" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="67" type="stmt" count="5"/>
      <line num="71" type="method" name="getAllowedParams" visibility="protected" complexity="1" crap="1" count="6"/>
      <line num="72" type="stmt" count="6"/>
      <line num="73" type="stmt" count="6"/>
      <line num="74" type="stmt" count="6"/>
      <line num="75" type="stmt" count="6"/>
      <line num="76" type="stmt" count="6"/>
      <line num="77" type="stmt" count="6"/>
      <line num="78" type="stmt" count="6"/>
      <line num="82" type="method" name="getExamplesMessages" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="92" type="method" name="isWriteMode" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="97" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="102" type="method" name="isInternal" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <metrics loc="108" ncloc="86" classes="1" methods="9" coveredmethods="5" conditionals="0" coveredconditionals="0" statements="30" coveredstatements="23" elements="39" coveredelements="28"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/NotificationRequestJob.php">
      <class name="MediaWiki\Extension\Notifications\Push\NotificationRequestJob" namespace="global">
        <metrics complexity="2" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="10" coveredelements="0"/>
      </class>
      <line num="13" type="method" name="run" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="14" type="stmt" count="0"/>
      <line num="15" type="stmt" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="17" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <metrics loc="27" ncloc="24" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="10" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/NotificationServiceClient.php">
      <class name="MediaWiki\Extension\Notifications\Push\NotificationServiceClient" namespace="global">
        <metrics complexity="10" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="22" elements="33" coveredelements="25"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="32" type="method" name="sendCheckEchoRequests" visibility="public" complexity="6" crap="6" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="34" type="stmt" count="2"/>
      <line num="35" type="stmt" count="2"/>
      <line num="36" type="stmt" count="2"/>
      <line num="37" type="stmt" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="41" type="stmt" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="44" type="stmt" count="2"/>
      <line num="45" type="stmt" count="2"/>
      <line num="46" type="stmt" count="2"/>
      <line num="47" type="stmt" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <line num="49" type="stmt" count="2"/>
      <line num="50" type="stmt" count="1"/>
      <line num="52" type="stmt" count="2"/>
      <line num="62" type="method" name="sendRequest" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="79" type="method" name="constructRequest" visibility="private" complexity="1" crap="1" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="81" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <metrics loc="88" ncloc="67" classes="1" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="29" coveredstatements="22" elements="33" coveredelements="25"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/PushNotifier.php">
      <class name="MediaWiki\Extension\Notifications\Push\PushNotifier" namespace="global">
        <metrics complexity="5" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="4" elements="13" coveredelements="4"/>
      </class>
      <line num="18" type="method" name="notifyWithPush" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="31" type="method" name="createJob" visibility="private" complexity="3" crap="3.71" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="41" type="stmt" count="1"/>
      <metrics loc="45" ncloc="33" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="4" elements="13" coveredelements="4"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/Subscription.php">
      <class name="MediaWiki\Extension\Notifications\Push\Subscription" namespace="global">
        <metrics complexity="6" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="17" coveredelements="17"/>
      </class>
      <line num="14" type="method" name="newFromRow" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="15" type="stmt" count="2"/>
      <line num="16" type="stmt" count="2"/>
      <line num="17" type="stmt" count="2"/>
      <line num="18" type="stmt" count="2"/>
      <line num="19" type="stmt" count="2"/>
      <line num="20" type="stmt" count="2"/>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="29" type="stmt" count="2"/>
      <line num="32" type="method" name="getProvider" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="33" type="stmt" count="2"/>
      <line num="37" type="method" name="getToken" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="38" type="stmt" count="2"/>
      <line num="42" type="method" name="getTopic" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="43" type="stmt" count="2"/>
      <line num="47" type="method" name="getUpdated" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="48" type="stmt" count="2"/>
      <metrics loc="52" ncloc="43" classes="1" methods="6" coveredmethods="6" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="17" coveredelements="17"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/SubscriptionManager.php">
      <class name="MediaWiki\Extension\Notifications\Push\SubscriptionManager" namespace="global">
        <metrics complexity="10" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="44" elements="49" coveredelements="47"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="37" type="method" name="create" visibility="public" complexity="5" crap="5" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="46" type="stmt" count="0"/>
      <line num="49" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" type="stmt" count="1"/>
      <line num="54" type="stmt" count="1"/>
      <line num="55" type="stmt" count="1"/>
      <line num="56" type="stmt" count="1"/>
      <line num="57" type="stmt" count="1"/>
      <line num="58" type="stmt" count="1"/>
      <line num="59" type="stmt" count="1"/>
      <line num="60" type="stmt" count="1"/>
      <line num="61" type="stmt" count="1"/>
      <line num="62" type="stmt" count="1"/>
      <line num="63" type="stmt" count="1"/>
      <line num="64" type="stmt" count="1"/>
      <line num="65" type="stmt" count="1"/>
      <line num="66" type="stmt" count="1"/>
      <line num="74" type="method" name="getSubscriptionsForUser" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="75" type="stmt" count="1"/>
      <line num="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="78" type="stmt" count="1"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="81" type="stmt" count="1"/>
      <line num="82" type="stmt" count="1"/>
      <line num="83" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="85" type="stmt" count="1"/>
      <line num="87" type="stmt" count="1"/>
      <line num="98" type="method" name="delete" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="99" type="stmt" count="1"/>
      <line num="100" type="stmt" count="1"/>
      <line num="101" type="stmt" count="1"/>
      <line num="103" type="stmt" count="1"/>
      <line num="104" type="stmt" count="1"/>
      <line num="105" type="stmt" count="1"/>
      <line num="106" type="stmt" count="1"/>
      <line num="107" type="stmt" count="1"/>
      <line num="108" type="stmt" count="1"/>
      <metrics loc="112" ncloc="81" classes="1" methods="4" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="45" coveredstatements="44" elements="49" coveredelements="47"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Push/Utils.php">
      <class name="MediaWiki\Extension\Notifications\Push\Utils" namespace="global">
        <metrics complexity="2" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="7" coveredelements="7"/>
      </class>
      <line num="19" type="method" name="getPushUserId" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="20" type="stmt" count="2"/>
      <line num="21" type="stmt" count="2"/>
      <line num="22" type="stmt" count="2"/>
      <line num="23" type="stmt" count="2"/>
      <line num="24" type="stmt" count="2"/>
      <line num="25" type="stmt" count="2"/>
      <metrics loc="29" ncloc="21" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="6" elements="7" coveredelements="7"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/ResourceLoaderEchoImageModule.php">
      <class name="MediaWiki\Extension\Notifications\ResourceLoaderEchoImageModule" namespace="global">
        <metrics complexity="6" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="0" elements="12" coveredelements="0"/>
      </class>
      <line num="32" type="method" name="loadFromDefinition" visibility="protected" complexity="6" crap="42" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <metrics loc="58" ncloc="32" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="0" elements="12" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/SchemaHooks.php">
      <class name="MediaWiki\Extension\Notifications\SchemaHooks" namespace="global">
        <metrics complexity="10" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="70" coveredstatements="0" elements="72" coveredelements="0"/>
      </class>
      <line num="15" type="method" name="onLoadExtensionSchemaUpdates" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="16" type="stmt" count="0"/>
      <line num="18" type="stmt" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="101" type="method" name="dropPushSubscriptionForeignKeys" visibility="public" complexity="7" crap="56" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <metrics loc="129" ncloc="105" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="70" coveredstatements="0" elements="72" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/SeenTime.php">
      <class name="MediaWiki\Extension\Notifications\SeenTime" namespace="global">
        <metrics complexity="18" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="0" elements="57" coveredelements="0"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="method" name="newFromUser" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="43" type="method" name="cache" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="69" type="method" name="getTime" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="100" type="method" name="setTime" visibility="public" complexity="4" crap="20" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="128" type="method" name="validateType" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="138" type="method" name="getMemcKey" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="158" type="stmt" count="0"/>
      <metrics loc="161" ncloc="111" classes="1" methods="7" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="0" elements="57" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Services.php">
      <class name="MediaWiki\Extension\Notifications\Services" namespace="global">
        <metrics complexity="9" methods="9" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="7" elements="18" coveredelements="14"/>
      </class>
      <line num="14" type="method" name="getInstance" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="15" type="stmt" count="4"/>
      <line num="18" type="method" name="wrap" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="19" type="stmt" count="1"/>
      <line num="22" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="5"/>
      <line num="23" type="stmt" count="5"/>
      <line num="25" type="method" name="getPushNotificationServiceClient" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="29" type="method" name="getPushSubscriptionManager" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="33" type="method" name="getEventController" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="37" type="method" name="getAttributeManager" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="41" type="method" name="getTitleLocalCache" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="45" type="method" name="getRevisionLocalCache" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <metrics loc="49" ncloc="49" classes="1" methods="9" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="7" elements="18" coveredelements="14"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Special/NotificationPager.php">
      <class name="MediaWiki\Extension\Notifications\Special\NotificationPager" namespace="global">
        <metrics complexity="9" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="0" elements="39" coveredelements="0"/>
      </class>
      <line num="20" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="30" type="method" name="formatRow" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="37" type="method" name="getQueryInfo" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="63" type="method" name="getNotifications" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="86" type="method" name="getIndexField" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <metrics loc="90" ncloc="77" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="34" coveredstatements="0" elements="39" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Special/SpecialDisplayNotificationsConfiguration.php">
      <class name="MediaWiki\Extension\Notifications\Special\SpecialDisplayNotificationsConfiguration" namespace="global">
        <metrics complexity="30" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="184" coveredstatements="0" elements="194" coveredelements="0"/>
      </class>
      <line num="61" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="69" type="method" name="execute" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="120" type="method" name="outputConfiguration" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="142" type="method" name="getMainHeading" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="161" type="method" name="getCheckMatrixWithSubHeading" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="180" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="183" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="185" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="195" type="method" name="getNotificationsInCategories" visibility="protected" complexity="2" crap="6" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="209" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="213" type="stmt" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="223" type="method" name="getNotificationsInSections" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="226" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="248" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="251" type="stmt" count="0"/>
      <line num="258" type="method" name="getAvailability" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="259" type="stmt" count="0"/>
      <line num="260" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="262" type="stmt" count="0"/>
      <line num="264" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="267" type="stmt" count="0"/>
      <line num="268" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="274" type="stmt" count="0"/>
      <line num="275" type="stmt" count="0"/>
      <line num="276" type="stmt" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="280" type="stmt" count="0"/>
      <line num="281" type="stmt" count="0"/>
      <line num="288" type="method" name="getEnabledDefault" visibility="protected" complexity="9" crap="90" count="0"/>
      <line num="289" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="295" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="302" type="stmt" count="0"/>
      <line num="303" type="stmt" count="0"/>
      <line num="304" type="stmt" count="0"/>
      <line num="305" type="stmt" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="311" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="317" type="stmt" count="0"/>
      <line num="322" type="stmt" count="0"/>
      <line num="323" type="stmt" count="0"/>
      <line num="324" type="stmt" count="0"/>
      <line num="325" type="stmt" count="0"/>
      <line num="326" type="stmt" count="0"/>
      <line num="327" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="330" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="334" type="stmt" count="0"/>
      <line num="335" type="stmt" count="0"/>
      <line num="336" type="stmt" count="0"/>
      <line num="337" type="stmt" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="343" type="stmt" count="0"/>
      <line num="344" type="stmt" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="346" type="stmt" count="0"/>
      <line num="347" type="stmt" count="0"/>
      <line num="348" type="stmt" count="0"/>
      <line num="349" type="stmt" count="0"/>
      <line num="350" type="stmt" count="0"/>
      <line num="352" type="stmt" count="0"/>
      <line num="359" type="method" name="getMandatory" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="360" type="stmt" count="0"/>
      <line num="362" type="stmt" count="0"/>
      <line num="363" type="stmt" count="0"/>
      <line num="364" type="stmt" count="0"/>
      <line num="365" type="stmt" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="369" type="stmt" count="0"/>
      <line num="370" type="stmt" count="0"/>
      <line num="375" type="stmt" count="0"/>
      <line num="376" type="stmt" count="0"/>
      <line num="377" type="stmt" count="0"/>
      <line num="378" type="stmt" count="0"/>
      <line num="379" type="stmt" count="0"/>
      <line num="380" type="stmt" count="0"/>
      <line num="381" type="stmt" count="0"/>
      <line num="382" type="stmt" count="0"/>
      <metrics loc="385" ncloc="305" classes="1" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="184" coveredstatements="0" elements="194" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Special/SpecialNotifications.php">
      <class name="MediaWiki\Extension\Notifications\Special\SpecialNotifications" namespace="global">
        <metrics complexity="18" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="163" coveredstatements="0" elements="168" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="28" type="method" name="getRestriction" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="35" type="method" name="execute" visibility="public" complexity="14" crap="210" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="110" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="127" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="142" type="stmt" count="0"/>
      <line num="143" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="146" type="stmt" count="0"/>
      <line num="147" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="159" type="stmt" count="0"/>
      <line num="161" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="164" type="stmt" count="0"/>
      <line num="168" type="stmt" count="0"/>
      <line num="169" type="stmt" count="0"/>
      <line num="171" type="stmt" count="0"/>
      <line num="172" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="174" type="stmt" count="0"/>
      <line num="176" type="stmt" count="0"/>
      <line num="177" type="stmt" count="0"/>
      <line num="178" type="stmt" count="0"/>
      <line num="179" type="stmt" count="0"/>
      <line num="181" type="stmt" count="0"/>
      <line num="184" type="stmt" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="188" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="190" type="stmt" count="0"/>
      <line num="191" type="stmt" count="0"/>
      <line num="192" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="197" type="stmt" count="0"/>
      <line num="198" type="stmt" count="0"/>
      <line num="199" type="stmt" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="207" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="216" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="218" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="225" type="stmt" count="0"/>
      <line num="227" type="stmt" count="0"/>
      <line num="228" type="stmt" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="230" type="stmt" count="0"/>
      <line num="231" type="stmt" count="0"/>
      <line num="232" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="242" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="252" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="254" type="stmt" count="0"/>
      <line num="255" type="stmt" count="0"/>
      <line num="256" type="stmt" count="0"/>
      <line num="257" type="stmt" count="0"/>
      <line num="264" type="method" name="buildSubtitle" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="266" type="stmt" count="0"/>
      <line num="268" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="270" type="stmt" count="0"/>
      <line num="271" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="274" type="stmt" count="0"/>
      <line num="275" type="stmt" count="0"/>
      <line num="276" type="stmt" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="279" type="stmt" count="0"/>
      <line num="283" type="method" name="getGroupName" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="284" type="stmt" count="0"/>
      <metrics loc="287" ncloc="251" classes="1" methods="5" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="163" coveredstatements="0" elements="168" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/Special/SpecialNotificationsMarkRead.php">
      <class name="MediaWiki\Extension\Notifications\Special\SpecialNotificationsMarkRead" namespace="global">
        <metrics complexity="16" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="55" coveredstatements="0" elements="65" coveredelements="0"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="24" type="method" name="doesWrites" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="29" type="method" name="execute" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="40" type="method" name="isListed" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="45" type="method" name="getDisplayFormat" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="53" type="method" name="getFormFields" visibility="protected" complexity="5" crap="30" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="92" type="method" name="getMinimalForm" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="131" type="method" name="alterForm" visibility="protected" complexity="1" crap="2" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="140" type="method" name="onSubmit" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="153" type="method" name="onSuccess" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <metrics loc="158" ncloc="112" classes="1" methods="10" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="55" coveredstatements="0" elements="65" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/SummaryParser.php">
      <class name="MediaWiki\Extension\Notifications\SummaryParser" namespace="global">
        <metrics complexity="10" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="16" elements="19" coveredelements="17"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="29" type="method" name="parse" visibility="public" complexity="9" crap="9" count="26"/>
      <line num="32" type="stmt" count="26"/>
      <line num="34" type="stmt" count="26"/>
      <line num="36" type="stmt" count="26"/>
      <line num="37" type="stmt" count="26"/>
      <line num="38" type="stmt" count="26"/>
      <line num="39" type="stmt" count="16"/>
      <line num="40" type="stmt" count="16"/>
      <line num="41" type="stmt" count="6"/>
      <line num="44" type="stmt" count="10"/>
      <line num="45" type="stmt" count="10"/>
      <line num="46" type="stmt" count="10"/>
      <line num="47" type="stmt" count="10"/>
      <line num="49" type="stmt" count="9"/>
      <line num="50" type="stmt" count="9"/>
      <line num="51" type="stmt" count="8"/>
      <line num="57" type="stmt" count="26"/>
      <metrics loc="60" ncloc="46" classes="1" methods="2" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="16" elements="19" coveredelements="17"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/UnreadWikis.php">
      <class name="MediaWiki\Extension\Notifications\UnreadWikis" namespace="global">
        <metrics complexity="20" methods="5" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="77" coveredstatements="67" elements="82" coveredelements="69"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="3"/>
      <line num="28" type="stmt" count="3"/>
      <line num="29" type="stmt" count="3"/>
      <line num="30" type="stmt" count="3"/>
      <line num="39" type="method" name="newFromUser" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="51" type="method" name="getDB" visibility="private" complexity="3" crap="3" count="3"/>
      <line num="52" type="stmt" count="3"/>
      <line num="53" type="stmt" count="1"/>
      <line num="56" type="stmt" count="2"/>
      <line num="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="64" type="method" name="getUnreadCounts" visibility="public" complexity="7" crap="7" count="3"/>
      <line num="65" type="stmt" count="3"/>
      <line num="66" type="stmt" count="3"/>
      <line num="67" type="stmt" count="1"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="72" type="stmt" count="2"/>
      <line num="73" type="stmt" count="2"/>
      <line num="74" type="stmt" count="2"/>
      <line num="75" type="stmt" count="2"/>
      <line num="76" type="stmt" count="2"/>
      <line num="77" type="stmt" count="2"/>
      <line num="78" type="stmt" count="2"/>
      <line num="79" type="stmt" count="2"/>
      <line num="81" type="stmt" count="2"/>
      <line num="82" type="stmt" count="2"/>
      <line num="83" type="stmt" count="2"/>
      <line num="85" type="stmt" count="0"/>
      <line num="87" type="stmt" count="2"/>
      <line num="88" type="stmt" count="2"/>
      <line num="89" type="stmt" count="2"/>
      <line num="90" type="stmt" count="2"/>
      <line num="91" type="stmt" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="93" type="stmt" count="2"/>
      <line num="94" type="stmt" count="2"/>
      <line num="95" type="stmt" count="2"/>
      <line num="96" type="stmt" count="2"/>
      <line num="97" type="stmt" count="2"/>
      <line num="98" type="stmt" count="2"/>
      <line num="101" type="stmt" count="2"/>
      <line num="113" type="method" name="updateCount" visibility="public" complexity="7" crap="7.14" count="3"/>
      <line num="114" type="stmt" count="3"/>
      <line num="115" type="stmt" count="3"/>
      <line num="116" type="stmt" count="1"/>
      <line num="119" type="stmt" count="2"/>
      <line num="120" type="stmt" count="2"/>
      <line num="121" type="stmt" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="125" type="stmt" count="2"/>
      <line num="126" type="stmt" count="2"/>
      <line num="127" type="stmt" count="2"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="1"/>
      <line num="130" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="2"/>
      <line num="133" type="stmt" count="2"/>
      <line num="134" type="stmt" count="2"/>
      <line num="135" type="stmt" count="1"/>
      <line num="136" type="stmt" count="2"/>
      <line num="137" type="stmt" count="2"/>
      <line num="138" type="stmt" count="2"/>
      <line num="141" type="stmt" count="2"/>
      <line num="142" type="stmt" count="2"/>
      <line num="143" type="stmt" count="2"/>
      <line num="144" type="stmt" count="2"/>
      <line num="145" type="stmt" count="2"/>
      <line num="146" type="stmt" count="2"/>
      <line num="147" type="stmt" count="2"/>
      <line num="148" type="stmt" count="2"/>
      <line num="151" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="154" type="stmt" count="0"/>
      <line num="155" type="stmt" count="0"/>
      <metrics loc="159" ncloc="127" classes="1" methods="5" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="77" coveredstatements="67" elements="82" coveredelements="69"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/UserLocator.php">
      <class name="MediaWiki\Extension\Notifications\UserLocator" namespace="global">
        <metrics complexity="31" methods="7" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="82" coveredstatements="66" elements="89" coveredelements="67"/>
      </class>
      <line num="24" type="method" name="locateUsersWatchingTitle" visibility="public" complexity="2" crap="2.01" count="1"/>
      <line num="25" type="stmt" count="1"/>
      <line num="26" type="stmt" count="1"/>
      <line num="27" type="stmt" count="0"/>
      <line num="29" type="stmt" count="1"/>
      <line num="30" type="stmt" count="1"/>
      <line num="31" type="stmt" count="1"/>
      <line num="32" type="stmt" count="1"/>
      <line num="33" type="stmt" count="1"/>
      <line num="34" type="stmt" count="1"/>
      <line num="35" type="stmt" count="1"/>
      <line num="36" type="stmt" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="46" type="stmt" count="1"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="1"/>
      <line num="51" type="stmt" count="1"/>
      <line num="61" type="method" name="locateTalkPageOwner" visibility="public" complexity="5" crap="5.05" count="4"/>
      <line num="62" type="stmt" count="4"/>
      <line num="63" type="stmt" count="4"/>
      <line num="64" type="stmt" count="2"/>
      <line num="67" type="stmt" count="2"/>
      <line num="69" type="stmt" count="2"/>
      <line num="70" type="stmt" count="2"/>
      <line num="71" type="stmt" count="2"/>
      <line num="74" type="stmt" count="0"/>
      <line num="84" type="method" name="locateUserPageOwner" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="105" type="method" name="locateEventAgent" visibility="public" complexity="3" crap="3" count="5"/>
      <line num="106" type="stmt" count="5"/>
      <line num="107" type="stmt" count="5"/>
      <line num="108" type="stmt" count="3"/>
      <line num="111" type="stmt" count="2"/>
      <line num="121" type="method" name="locateArticleCreator" visibility="public" complexity="6" crap="6.40" count="2"/>
      <line num="122" type="stmt" count="2"/>
      <line num="124" type="stmt" count="2"/>
      <line num="125" type="stmt" count="0"/>
      <line num="128" type="stmt" count="2"/>
      <line num="129" type="stmt" count="2"/>
      <line num="131" type="stmt" count="2"/>
      <line num="132" type="stmt" count="1"/>
      <line num="134" type="stmt" count="2"/>
      <line num="137" type="stmt" count="0"/>
      <line num="144" type="method" name="getArticleAuthorByArticleId" visibility="public" complexity="3" crap="3.00" count="2"/>
      <line num="145" type="stmt" count="2"/>
      <line num="146" type="stmt" count="2"/>
      <line num="147" type="stmt" count="2"/>
      <line num="148" type="stmt" count="2"/>
      <line num="149" type="stmt" count="2"/>
      <line num="150" type="stmt" count="2"/>
      <line num="151" type="stmt" count="2"/>
      <line num="152" type="stmt" count="2"/>
      <line num="153" type="stmt" count="2"/>
      <line num="154" type="stmt" count="2"/>
      <line num="155" type="stmt" count="2"/>
      <line num="156" type="stmt" count="2"/>
      <line num="157" type="stmt" count="2"/>
      <line num="158" type="stmt" count="2"/>
      <line num="159" type="stmt" count="0"/>
      <line num="162" type="stmt" count="2"/>
      <line num="179" type="method" name="locateFromEventExtra" visibility="public" complexity="7" crap="7.01" count="9"/>
      <line num="180" type="stmt" count="9"/>
      <line num="181" type="stmt" count="9"/>
      <line num="182" type="stmt" count="9"/>
      <line num="183" type="stmt" count="9"/>
      <line num="184" type="stmt" count="9"/>
      <line num="185" type="stmt" count="4"/>
      <line num="187" type="stmt" count="5"/>
      <line num="188" type="stmt" count="2"/>
      <line num="190" type="stmt" count="5"/>
      <line num="193" type="stmt" count="5"/>
      <line num="194" type="stmt" count="2"/>
      <line num="195" type="stmt" count="0"/>
      <line num="197" type="stmt" count="2"/>
      <line num="199" type="stmt" count="3"/>
      <line num="201" type="stmt" count="5"/>
      <line num="205" type="stmt" count="9"/>
      <line num="209" type="stmt" count="0"/>
      <metrics loc="210" ncloc="148" classes="1" methods="7" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="83" coveredstatements="66" elements="90" coveredelements="67"/>
    </file>
    <file name="/workspace/src/extensions/Echo/includes/UserMergeHooks.php">
      <class name="MediaWiki\Extension\Notifications\UserMergeHooks" namespace="global">
        <metrics complexity="11" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="69" coveredstatements="0" elements="73" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="22" type="stmt" count="0"/>
      <line num="27" type="method" name="onUserMergeAccountFields" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="35" type="method" name="onMergeAccountFromTo" visibility="public" complexity="8" crap="72" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="114" type="method" name="onUserMergeAccountDeleteTables" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <metrics loc="120" ncloc="112" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="69" coveredstatements="0" elements="73" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/backfillUnreadWikis.php">
      <class name="BackfillUnreadWikis" namespace="global">
        <metrics complexity="13" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="0" elements="52" coveredelements="0"/>
      </class>
      <line num="22" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="31" type="method" name="execute" visibility="public" complexity="12" crap="156" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <metrics loc="107" ncloc="100" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="50" coveredstatements="0" elements="52" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/generateSampleNotifications.php">
      <class name="GenerateSampleNotifications" namespace="global">
        <metrics complexity="66" methods="29" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="350" coveredstatements="0" elements="379" coveredelements="0"/>
      </class>
      <line num="51" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="91" type="method" name="execute" visibility="public" complexity="15" crap="240" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="109" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="133" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <line num="145" type="stmt" count="0"/>
      <line num="148" type="stmt" count="0"/>
      <line num="149" type="stmt" count="0"/>
      <line num="152" type="stmt" count="0"/>
      <line num="153" type="stmt" count="0"/>
      <line num="156" type="stmt" count="0"/>
      <line num="157" type="stmt" count="0"/>
      <line num="160" type="stmt" count="0"/>
      <line num="169" type="method" name="getTimestamp" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="170" type="stmt" count="0"/>
      <line num="173" type="stmt" count="0"/>
      <line num="175" type="stmt" count="0"/>
      <line num="185" type="method" name="addTimestampToOutput" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="186" type="stmt" count="0"/>
      <line num="187" type="stmt" count="0"/>
      <line num="189" type="stmt" count="0"/>
      <line num="192" type="method" name="generateEditUserTalk" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="193" type="stmt" count="0"/>
      <line num="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="196" type="stmt" count="0"/>
      <line num="199" type="method" name="getOptionUser" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="200" type="stmt" count="0"/>
      <line num="201" type="stmt" count="0"/>
      <line num="202" type="stmt" count="0"/>
      <line num="203" type="stmt" count="0"/>
      <line num="204" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="209" type="method" name="generateRandomString" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="210" type="stmt" count="0"/>
      <line num="213" type="method" name="confirm" visibility="protected" complexity="3" crap="12" count="0"/>
      <line num="214" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="217" type="stmt" count="0"/>
      <line num="218" type="stmt" count="0"/>
      <line num="219" type="stmt" count="0"/>
      <line num="220" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="222" type="stmt" count="0"/>
      <line num="223" type="stmt" count="0"/>
      <line num="224" type="stmt" count="0"/>
      <line num="228" type="method" name="addToUserTalk" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="229" type="stmt" count="0"/>
      <line num="232" type="method" name="addToPageContent" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="233" type="stmt" count="0"/>
      <line num="234" type="stmt" count="0"/>
      <line num="235" type="stmt" count="0"/>
      <line num="236" type="stmt" count="0"/>
      <line num="237" type="stmt" count="0"/>
      <line num="238" type="stmt" count="0"/>
      <line num="239" type="stmt" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="243" type="stmt" count="0"/>
      <line num="244" type="stmt" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <line num="247" type="stmt" count="0"/>
      <line num="249" type="stmt" count="0"/>
      <line num="250" type="stmt" count="0"/>
      <line num="253" type="stmt" count="0"/>
      <line num="256" type="method" name="generateMention" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="257" type="stmt" count="0"/>
      <line num="260" type="stmt" count="0"/>
      <line num="261" type="stmt" count="0"/>
      <line num="264" type="stmt" count="0"/>
      <line num="265" type="stmt" count="0"/>
      <line num="268" type="stmt" count="0"/>
      <line num="269" type="stmt" count="0"/>
      <line num="272" type="stmt" count="0"/>
      <line num="273" type="stmt" count="0"/>
      <line num="276" type="method" name="generatePageLink" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="277" type="stmt" count="0"/>
      <line num="278" type="stmt" count="0"/>
      <line num="281" type="method" name="generateNewPageTitle" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="282" type="stmt" count="0"/>
      <line num="285" type="method" name="generateReverted" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="286" type="stmt" count="0"/>
      <line num="287" type="stmt" count="0"/>
      <line num="290" type="stmt" count="0"/>
      <line num="291" type="stmt" count="0"/>
      <line num="292" type="stmt" count="0"/>
      <line num="293" type="stmt" count="0"/>
      <line num="294" type="stmt" count="0"/>
      <line num="296" type="stmt" count="0"/>
      <line num="297" type="stmt" count="0"/>
      <line num="298" type="stmt" count="0"/>
      <line num="300" type="stmt" count="0"/>
      <line num="301" type="stmt" count="0"/>
      <line num="302" type="stmt" count="0"/>
      <line num="303" type="stmt" count="0"/>
      <line num="304" type="stmt" count="0"/>
      <line num="305" type="stmt" count="0"/>
      <line num="306" type="stmt" count="0"/>
      <line num="308" type="stmt" count="0"/>
      <line num="309" type="stmt" count="0"/>
      <line num="310" type="stmt" count="0"/>
      <line num="313" type="stmt" count="0"/>
      <line num="314" type="stmt" count="0"/>
      <line num="315" type="stmt" count="0"/>
      <line num="318" type="stmt" count="0"/>
      <line num="319" type="stmt" count="0"/>
      <line num="320" type="stmt" count="0"/>
      <line num="321" type="stmt" count="0"/>
      <line num="323" type="stmt" count="0"/>
      <line num="324" type="stmt" count="0"/>
      <line num="326" type="stmt" count="0"/>
      <line num="327" type="stmt" count="0"/>
      <line num="328" type="stmt" count="0"/>
      <line num="329" type="stmt" count="0"/>
      <line num="331" type="stmt" count="0"/>
      <line num="333" type="stmt" count="0"/>
      <line num="335" type="stmt" count="0"/>
      <line num="336" type="stmt" count="0"/>
      <line num="337" type="stmt" count="0"/>
      <line num="339" type="stmt" count="0"/>
      <line num="340" type="stmt" count="0"/>
      <line num="344" type="method" name="generateWelcome" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="345" type="stmt" count="0"/>
      <line num="346" type="stmt" count="0"/>
      <line num="347" type="stmt" count="0"/>
      <line num="348" type="stmt" count="0"/>
      <line num="349" type="stmt" count="0"/>
      <line num="350" type="stmt" count="0"/>
      <line num="353" type="method" name="generateEmail" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="354" type="stmt" count="0"/>
      <line num="355" type="stmt" count="0"/>
      <line num="356" type="stmt" count="0"/>
      <line num="357" type="stmt" count="0"/>
      <line num="358" type="stmt" count="0"/>
      <line num="359" type="stmt" count="0"/>
      <line num="360" type="stmt" count="0"/>
      <line num="361" type="stmt" count="0"/>
      <line num="362" type="stmt" count="0"/>
      <line num="363" type="stmt" count="0"/>
      <line num="366" type="method" name="generateUserRights" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="367" type="stmt" count="0"/>
      <line num="368" type="stmt" count="0"/>
      <line num="369" type="stmt" count="0"/>
      <line num="370" type="stmt" count="0"/>
      <line num="371" type="stmt" count="0"/>
      <line num="374" type="method" name="createUserRightsNotification" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="376" type="stmt" count="0"/>
      <line num="377" type="stmt" count="0"/>
      <line num="378" type="stmt" count="0"/>
      <line num="379" type="stmt" count="0"/>
      <line num="380" type="stmt" count="0"/>
      <line num="381" type="stmt" count="0"/>
      <line num="382" type="stmt" count="0"/>
      <line num="383" type="stmt" count="0"/>
      <line num="384" type="stmt" count="0"/>
      <line num="385" type="stmt" count="0"/>
      <line num="386" type="stmt" count="0"/>
      <line num="387" type="stmt" count="0"/>
      <line num="388" type="stmt" count="0"/>
      <line num="391" type="method" name="generateContentTranslation" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="392" type="stmt" count="0"/>
      <line num="393" type="stmt" count="0"/>
      <line num="396" type="stmt" count="0"/>
      <line num="397" type="stmt" count="0"/>
      <line num="398" type="stmt" count="0"/>
      <line num="399" type="stmt" count="0"/>
      <line num="400" type="stmt" count="0"/>
      <line num="401" type="stmt" count="0"/>
      <line num="402" type="stmt" count="0"/>
      <line num="403" type="stmt" count="0"/>
      <line num="406" type="stmt" count="0"/>
      <line num="407" type="stmt" count="0"/>
      <line num="408" type="stmt" count="0"/>
      <line num="409" type="stmt" count="0"/>
      <line num="410" type="stmt" count="0"/>
      <line num="411" type="stmt" count="0"/>
      <line num="412" type="stmt" count="0"/>
      <line num="413" type="stmt" count="0"/>
      <line num="414" type="stmt" count="0"/>
      <line num="417" type="method" name="generateOnePageLink" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="418" type="stmt" count="0"/>
      <line num="419" type="stmt" count="0"/>
      <line num="421" type="stmt" count="0"/>
      <line num="422" type="stmt" count="0"/>
      <line num="423" type="stmt" count="0"/>
      <line num="424" type="stmt" count="0"/>
      <line num="427" type="method" name="generateMultiplePageLinks" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="428" type="stmt" count="0"/>
      <line num="429" type="stmt" count="0"/>
      <line num="431" type="stmt" count="0"/>
      <line num="432" type="stmt" count="0"/>
      <line num="433" type="stmt" count="0"/>
      <line num="435" type="stmt" count="0"/>
      <line num="437" type="stmt" count="0"/>
      <line num="440" type="method" name="generateOpenStackManager" visibility="private" complexity="3" crap="12" count="0"/>
      <line num="441" type="stmt" count="0"/>
      <line num="442" type="stmt" count="0"/>
      <line num="445" type="stmt" count="0"/>
      <line num="447" type="stmt" count="0"/>
      <line num="448" type="stmt" count="0"/>
      <line num="449" type="stmt" count="0"/>
      <line num="450" type="stmt" count="0"/>
      <line num="451" type="stmt" count="0"/>
      <line num="452" type="stmt" count="0"/>
      <line num="453" type="stmt" count="0"/>
      <line num="454" type="stmt" count="0"/>
      <line num="455" type="stmt" count="0"/>
      <line num="456" type="stmt" count="0"/>
      <line num="457" type="stmt" count="0"/>
      <line num="458" type="stmt" count="0"/>
      <line num="461" type="stmt" count="0"/>
      <line num="462" type="stmt" count="0"/>
      <line num="463" type="stmt" count="0"/>
      <line num="464" type="stmt" count="0"/>
      <line num="465" type="stmt" count="0"/>
      <line num="466" type="stmt" count="0"/>
      <line num="467" type="stmt" count="0"/>
      <line num="470" type="method" name="shouldGenerate" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="471" type="stmt" count="0"/>
      <line num="474" type="method" name="generateEditThanks" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="475" type="stmt" count="0"/>
      <line num="476" type="stmt" count="0"/>
      <line num="479" type="method" name="generateOneEditThanks" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="480" type="stmt" count="0"/>
      <line num="481" type="stmt" count="0"/>
      <line num="484" type="stmt" count="0"/>
      <line num="485" type="stmt" count="0"/>
      <line num="486" type="stmt" count="0"/>
      <line num="487" type="stmt" count="0"/>
      <line num="488" type="stmt" count="0"/>
      <line num="489" type="stmt" count="0"/>
      <line num="490" type="stmt" count="0"/>
      <line num="491" type="stmt" count="0"/>
      <line num="492" type="stmt" count="0"/>
      <line num="493" type="stmt" count="0"/>
      <line num="494" type="stmt" count="0"/>
      <line num="495" type="stmt" count="0"/>
      <line num="496" type="stmt" count="0"/>
      <line num="497" type="stmt" count="0"/>
      <line num="498" type="stmt" count="0"/>
      <line num="501" type="method" name="generateMultipleEditThanks" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="502" type="stmt" count="0"/>
      <line num="503" type="stmt" count="0"/>
      <line num="506" type="stmt" count="0"/>
      <line num="507" type="stmt" count="0"/>
      <line num="508" type="stmt" count="0"/>
      <line num="509" type="stmt" count="0"/>
      <line num="510" type="stmt" count="0"/>
      <line num="511" type="stmt" count="0"/>
      <line num="512" type="stmt" count="0"/>
      <line num="513" type="stmt" count="0"/>
      <line num="514" type="stmt" count="0"/>
      <line num="515" type="stmt" count="0"/>
      <line num="516" type="stmt" count="0"/>
      <line num="517" type="stmt" count="0"/>
      <line num="518" type="stmt" count="0"/>
      <line num="519" type="stmt" count="0"/>
      <line num="520" type="stmt" count="0"/>
      <line num="521" type="stmt" count="0"/>
      <line num="522" type="stmt" count="0"/>
      <line num="523" type="stmt" count="0"/>
      <line num="524" type="stmt" count="0"/>
      <line num="525" type="stmt" count="0"/>
      <line num="526" type="stmt" count="0"/>
      <line num="527" type="stmt" count="0"/>
      <line num="528" type="stmt" count="0"/>
      <line num="529" type="stmt" count="0"/>
      <line num="530" type="stmt" count="0"/>
      <line num="531" type="stmt" count="0"/>
      <line num="534" type="method" name="generateVerifyEmailReminder" visibility="private" complexity="1" crap="2" count="0"/>
      <line num="535" type="stmt" count="0"/>
      <line num="536" type="stmt" count="0"/>
      <line num="537" type="stmt" count="0"/>
      <line num="538" type="stmt" count="0"/>
      <line num="539" type="stmt" count="0"/>
      <line num="540" type="stmt" count="0"/>
      <line num="541" type="stmt" count="0"/>
      <line num="544" type="method" name="generateEducationProgram" visibility="private" complexity="4" crap="20" count="0"/>
      <line num="545" type="stmt" count="0"/>
      <line num="546" type="stmt" count="0"/>
      <line num="547" type="stmt" count="0"/>
      <line num="550" type="stmt" count="0"/>
      <line num="551" type="stmt" count="0"/>
      <line num="552" type="stmt" count="0"/>
      <line num="555" type="stmt" count="0"/>
      <line num="557" type="stmt" count="0"/>
      <line num="558" type="stmt" count="0"/>
      <line num="560" type="stmt" count="0"/>
      <line num="561" type="stmt" count="0"/>
      <line num="562" type="stmt" count="0"/>
      <line num="563" type="stmt" count="0"/>
      <line num="564" type="stmt" count="0"/>
      <line num="565" type="stmt" count="0"/>
      <line num="566" type="stmt" count="0"/>
      <line num="567" type="stmt" count="0"/>
      <line num="568" type="stmt" count="0"/>
      <line num="569" type="stmt" count="0"/>
      <line num="570" type="stmt" count="0"/>
      <line num="571" type="stmt" count="0"/>
      <line num="572" type="stmt" count="0"/>
      <line num="573" type="stmt" count="0"/>
      <line num="574" type="stmt" count="0"/>
      <line num="581" type="method" name="generateWikibase" visibility="private" complexity="2" crap="6" count="0"/>
      <line num="582" type="stmt" count="0"/>
      <line num="583" type="stmt" count="0"/>
      <line num="584" type="stmt" count="0"/>
      <line num="587" type="stmt" count="0"/>
      <line num="588" type="stmt" count="0"/>
      <line num="589" type="stmt" count="0"/>
      <line num="590" type="stmt" count="0"/>
      <line num="592" type="stmt" count="0"/>
      <line num="593" type="stmt" count="0"/>
      <line num="594" type="stmt" count="0"/>
      <line num="595" type="stmt" count="0"/>
      <line num="596" type="stmt" count="0"/>
      <line num="597" type="stmt" count="0"/>
      <line num="598" type="stmt" count="0"/>
      <line num="599" type="stmt" count="0"/>
      <line num="600" type="stmt" count="0"/>
      <line num="601" type="stmt" count="0"/>
      <line num="602" type="stmt" count="0"/>
      <line num="603" type="stmt" count="0"/>
      <line num="604" type="stmt" count="0"/>
      <metrics loc="612" ncloc="571" classes="1" methods="29" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="350" coveredstatements="0" elements="379" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/processEchoEmailBatch.php">
      <class name="ProcessEchoEmailBatch" namespace="global">
        <metrics complexity="8" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="33" coveredelements="0"/>
      </class>
      <line num="19" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="20" type="stmt" count="0"/>
      <line num="21" type="stmt" count="0"/>
      <line num="23" type="stmt" count="0"/>
      <line num="24" type="stmt" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="32" type="method" name="execute" visibility="public" complexity="7" crap="56" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <metrics loc="76" ncloc="68" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="33" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/recomputeNotifCounts.php">
      <class name="RecomputeNotifCounts" namespace="global">
        <metrics complexity="11" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="56" coveredstatements="0" elements="58" coveredelements="0"/>
      </class>
      <line num="27" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="42" type="method" name="execute" visibility="public" complexity="10" crap="110" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <metrics loc="106" ncloc="92" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="56" coveredstatements="0" elements="58" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/removeInvalidNotification.php">
      <class name="RemoveInvalidNotification" namespace="global">
        <metrics complexity="11" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="49" coveredstatements="0" elements="51" coveredelements="0"/>
      </class>
      <line num="25" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="30" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="34" type="method" name="execute" visibility="public" complexity="10" crap="110" count="0"/>
      <line num="35" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="58" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="61" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <metrics loc="113" ncloc="96" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="49" coveredstatements="0" elements="51" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/removeOrphanedEvents.php">
      <class name="RemoveOrphanedEvents" namespace="global">
        <metrics complexity="9" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="94" coveredstatements="0" elements="98" coveredelements="0"/>
      </class>
      <line num="25" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="26" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="31" type="stmt" count="0"/>
      <line num="33" type="stmt" count="0"/>
      <line num="37" type="method" name="getUpdateKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="38" type="stmt" count="0"/>
      <line num="42" type="method" name="doDBUpdates" visibility="public" complexity="2" crap="6" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="54" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="56" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="65" type="method" name="doMajorBatch" visibility="private" complexity="5" crap="30" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="67" type="stmt" count="0"/>
      <line num="68" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="73" type="stmt" count="0"/>
      <line num="74" type="stmt" count="0"/>
      <line num="75" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="78" type="stmt" count="0"/>
      <line num="79" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="96" type="stmt" count="0"/>
      <line num="97" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="99" type="stmt" count="0"/>
      <line num="100" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <line num="102" type="stmt" count="0"/>
      <line num="103" type="stmt" count="0"/>
      <line num="104" type="stmt" count="0"/>
      <line num="105" type="stmt" count="0"/>
      <line num="106" type="stmt" count="0"/>
      <line num="107" type="stmt" count="0"/>
      <line num="108" type="stmt" count="0"/>
      <line num="111" type="stmt" count="0"/>
      <line num="112" type="stmt" count="0"/>
      <line num="113" type="stmt" count="0"/>
      <line num="114" type="stmt" count="0"/>
      <line num="115" type="stmt" count="0"/>
      <line num="116" type="stmt" count="0"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="119" type="stmt" count="0"/>
      <line num="120" type="stmt" count="0"/>
      <line num="121" type="stmt" count="0"/>
      <line num="122" type="stmt" count="0"/>
      <line num="123" type="stmt" count="0"/>
      <line num="124" type="stmt" count="0"/>
      <line num="125" type="stmt" count="0"/>
      <line num="126" type="stmt" count="0"/>
      <line num="128" type="stmt" count="0"/>
      <line num="129" type="stmt" count="0"/>
      <line num="130" type="stmt" count="0"/>
      <line num="131" type="stmt" count="0"/>
      <line num="132" type="stmt" count="0"/>
      <line num="134" type="stmt" count="0"/>
      <line num="135" type="stmt" count="0"/>
      <line num="136" type="stmt" count="0"/>
      <line num="137" type="stmt" count="0"/>
      <line num="138" type="stmt" count="0"/>
      <line num="139" type="stmt" count="0"/>
      <line num="140" type="stmt" count="0"/>
      <line num="141" type="stmt" count="0"/>
      <line num="144" type="stmt" count="0"/>
      <metrics loc="152" ncloc="136" classes="1" methods="4" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="94" coveredstatements="0" elements="98" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/Echo/maintenance/updatePerUserBlacklist.php">
      <class name="UpdatePerUserBlacklist" namespace="global">
        <metrics complexity="7" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="52" coveredstatements="0" elements="55" coveredelements="0"/>
      </class>
      <line num="24" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="27" type="stmt" count="0"/>
      <line num="28" type="stmt" count="0"/>
      <line num="29" type="stmt" count="0"/>
      <line num="33" type="method" name="getUpdateKey" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="34" type="stmt" count="0"/>
      <line num="38" type="method" name="doDBUpdates" visibility="public" complexity="5" crap="30" count="0"/>
      <line num="39" type="stmt" count="0"/>
      <line num="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <line num="42" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <line num="44" type="stmt" count="0"/>
      <line num="45" type="stmt" count="0"/>
      <line num="46" type="stmt" count="0"/>
      <line num="47" type="stmt" count="0"/>
      <line num="48" type="stmt" count="0"/>
      <line num="49" type="stmt" count="0"/>
      <line num="50" type="stmt" count="0"/>
      <line num="51" type="stmt" count="0"/>
      <line num="52" type="stmt" count="0"/>
      <line num="53" type="stmt" count="0"/>
      <line num="55" type="stmt" count="0"/>
      <line num="57" type="stmt" count="0"/>
      <line num="59" type="stmt" count="0"/>
      <line num="60" type="stmt" count="0"/>
      <line num="62" type="stmt" count="0"/>
      <line num="63" type="stmt" count="0"/>
      <line num="64" type="stmt" count="0"/>
      <line num="65" type="stmt" count="0"/>
      <line num="66" type="stmt" count="0"/>
      <line num="69" type="stmt" count="0"/>
      <line num="70" type="stmt" count="0"/>
      <line num="71" type="stmt" count="0"/>
      <line num="72" type="stmt" count="0"/>
      <line num="76" type="stmt" count="0"/>
      <line num="77" type="stmt" count="0"/>
      <line num="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <line num="83" type="stmt" count="0"/>
      <line num="84" type="stmt" count="0"/>
      <line num="85" type="stmt" count="0"/>
      <line num="86" type="stmt" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="88" type="stmt" count="0"/>
      <line num="89" type="stmt" count="0"/>
      <line num="90" type="stmt" count="0"/>
      <line num="91" type="stmt" count="0"/>
      <line num="92" type="stmt" count="0"/>
      <line num="93" type="stmt" count="0"/>
      <line num="94" type="stmt" count="0"/>
      <line num="95" type="stmt" count="0"/>
      <line num="98" type="stmt" count="0"/>
      <line num="101" type="stmt" count="0"/>
      <metrics loc="109" ncloc="91" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="52" coveredstatements="0" elements="55" coveredelements="0"/>
    </file>
    <metrics files="129" loc="20106" ncloc="15181" classes="113" methods="816" coveredmethods="204" conditionals="0" coveredconditionals="0" statements="7793" coveredstatements="2671" elements="8609" coveredelements="2875"/>
  </project>
</coverage>
