<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1790834360">
  <project timestamp="1790834360">
    <file name="/workspace/src/extensions/BounceHandler/includes/ApiBounceHandler.php">
      <class name="MediaWiki\Extension\BounceHandler\ApiBounceHandler" namespace="global">
        <metrics complexity="13" methods="8" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="31" elements="51" coveredelements="34"/>
      </class>
      <line num="23" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="28" type="stmt" count="4"/>
      <line num="32" type="method" name="execute" visibility="public" complexity="6" crap="6.20" 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="1"/>
      <line num="38" type="stmt" count="1"/>
      <line num="41" type="stmt" count="2"/>
      <line num="42" type="stmt" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="46" 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="56" type="stmt" count="1"/>
      <line num="57" 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="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="73" type="stmt" count="1"/>
      <line num="81" type="method" name="isInternal" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="82" type="stmt" count="0"/>
      <line num="86" type="method" name="mustBePosted" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="87" type="stmt" count="0"/>
      <line num="91" type="method" name="isWriteMode" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="92" type="stmt" count="2"/>
      <line num="96" type="method" name="getAllowedParams" visibility="public" complexity="1" crap="1" count="4"/>
      <line num="97" type="stmt" count="4"/>
      <line num="98" type="stmt" count="4"/>
      <line num="99" type="stmt" count="4"/>
      <line num="100" type="stmt" count="4"/>
      <line num="101" type="stmt" count="4"/>
      <line num="102" type="stmt" count="4"/>
      <line num="109" type="method" name="getExamplesMessages" visibility="public" complexity="1" crap="2" 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="117" type="method" name="getHelpUrls" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <metrics loc="122" ncloc="95" classes="1" methods="8" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="43" coveredstatements="31" elements="51" coveredelements="34"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/BounceHandlerActions.php">
      <class name="MediaWiki\Extension\BounceHandler\BounceHandlerActions" namespace="global">
        <metrics complexity="15" methods="6" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="82" coveredstatements="64" elements="88" coveredelements="67"/>
      </class>
      <line num="40" type="method" name="__construct" visibility="public" complexity="2" crap="2.01" count="1"/>
      <line num="43" type="stmt" count="1"/>
      <line num="45" type="stmt" count="0"/>
      <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="62" type="method" name="handleFailingRecipient" visibility="public" complexity="3" crap="3" 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="67" type="stmt" count="1"/>
      <line num="69" type="stmt" 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="76" type="stmt" count="1"/>
      <line num="77" type="stmt" count="1"/>
      <line num="79" type="stmt" count="1"/>
      <line num="80" type="stmt" count="1"/>
      <line num="84" type="stmt" count="1"/>
      <line num="93" type="method" name="createEchoNotification" visibility="public" complexity="2" crap="2" count="1"/>
      <line num="94" type="stmt" count="1"/>
      <line num="95" type="stmt" count="1"/>
      <line num="96" type="stmt" count="1"/>
      <line num="97" 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="112" type="method" name="notifyGlobalUser" visibility="public" complexity="1" crap="2" 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="134" type="method" name="unSubscribeUser" visibility="public" complexity="6" crap="6.10" count="1"/>
      <line num="135" type="stmt" count="1"/>
      <line num="136" 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="143" type="stmt" count="0"/>
      <line num="147" type="stmt" count="1"/>
      <line num="149" type="stmt" count="0"/>
      <line num="150" type="stmt" count="0"/>
      <line num="151" type="stmt" count="0"/>
      <line num="154" type="stmt" count="1"/>
      <line num="155" type="stmt" count="1"/>
      <line num="156" 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="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="181" type="method" name="formatHeaders" visibility="private" complexity="1" crap="1" 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"/>
      <metrics loc="195" ncloc="145" classes="1" methods="6" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="82" coveredstatements="64" elements="88" coveredelements="67"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/BounceHandlerJob.php">
      <class name="MediaWiki\Extension\BounceHandler\BounceHandlerJob" namespace="global">
        <metrics complexity="3" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="0" elements="8" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="23" type="method" name="run" visibility="public" complexity="2" crap="6" 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="31" type="stmt" count="0"/>
      <metrics loc="34" ncloc="23" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="6" coveredstatements="0" elements="8" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/BounceHandlerNotificationJob.php">
      <class name="MediaWiki\Extension\BounceHandler\BounceHandlerNotificationJob" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="20" coveredelements="0"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="19" type="stmt" count="0"/>
      <line num="23" type="method" name="run" visibility="public" complexity="3" crap="12" 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="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="40" type="stmt" count="0"/>
      <line num="43" type="stmt" count="0"/>
      <metrics loc="46" ncloc="35" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="20" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/EchoBounceHandlerPresentationModel.php">
      <class name="MediaWiki\Extension\BounceHandler\EchoBounceHandlerPresentationModel" namespace="global">
        <metrics complexity="3" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="12" 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="19" type="method" name="getPrimaryLink" visibility="public" complexity="1" crap="2" 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="29" type="method" name="getHeaderMessage" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="30" 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"/>
      <metrics loc="41" ncloc="29" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="9" coveredstatements="0" elements="12" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/EchoHooks.php">
      <class name="MediaWiki\Extension\BounceHandler\EchoHooks" namespace="global">
        <metrics complexity="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="21" coveredelements="0"/>
      </class>
      <line num="25" type="method" name="onBeforeCreateEchoEvent" visibility="public" complexity="1" crap="2" 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="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="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"/>
      <metrics loc="57" ncloc="41" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="21" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/Hooks.php">
      <class name="MediaWiki\Extension\BounceHandler\Hooks" namespace="global">
        <metrics complexity="8" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="23" coveredelements="0"/>
      </class>
      <line num="21" type="method" name="__construct" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="25" type="stmt" count="0"/>
      <line num="35" type="method" name="onUserMailerChangeReturnPath" visibility="public" complexity="3" crap="12" count="0"/>
      <line num="36" type="stmt" count="0"/>
      <line num="37" type="stmt" count="0"/>
      <line num="48" type="method" name="generateVerp" visibility="protected" complexity="4" crap="20" 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="54" 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="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="69" type="stmt" count="0"/>
      <metrics loc="72" ncloc="50" classes="1" methods="3" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="20" coveredstatements="0" elements="23" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/ProcessBounceEmails.php">
      <class name="MediaWiki\Extension\BounceHandler\ProcessBounceEmails" namespace="global">
        <metrics complexity="25" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="105" coveredstatements="0" elements="114" coveredelements="0"/>
      </class>
      <line num="31" type="method" name="getProcessor" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="32" type="stmt" count="0"/>
      <line num="43" type="method" name="processEmail" visibility="public" complexity="2" crap="6" 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="50" type="stmt" count="0"/>
      <line num="61" type="method" name="processBounceHeaders" visibility="public" complexity="7" crap="56" 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="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="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="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="95" 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="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="123" type="method" name="getUserDetails" visibility="public" complexity="6" crap="42" 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="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="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="148" 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="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="161" type="stmt" count="0"/>
      <line num="162" type="stmt" count="0"/>
      <line num="163" type="stmt" count="0"/>
      <line num="166" type="stmt" count="0"/>
      <line num="175" type="method" name="getOriginalEmail" visibility="public" complexity="2" crap="6" 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="182" 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="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="194" type="stmt" count="0"/>
      <line num="195" type="stmt" count="0"/>
      <line num="204" type="method" name="checkPermanentFailure" visibility="protected" complexity="4" crap="20" count="0"/>
      <line num="205" type="stmt" count="0"/>
      <line num="206" type="stmt" count="0"/>
      <line num="208" type="stmt" count="0"/>
      <line num="211" type="stmt" count="0"/>
      <line num="212" type="stmt" count="0"/>
      <line num="215" type="stmt" count="0"/>
      <line num="218" type="stmt" count="0"/>
      <line num="221" type="stmt" count="0"/>
      <line num="230" type="method" name="handleUnrecognizedBounces" visibility="public" complexity="1" crap="2" 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="239" type="method" name="getBounceRecordPrimaryDB" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="240" type="stmt" count="0"/>
      <line num="241" type="stmt" count="0"/>
      <line num="244" type="method" name="getBounceRecordReplicaDB" visibility="public" complexity="1" crap="2" count="0"/>
      <line num="245" type="stmt" count="0"/>
      <line num="246" type="stmt" count="0"/>
      <metrics loc="249" ncloc="180" classes="1" methods="9" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="105" coveredstatements="0" elements="114" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/ProcessBounceWithRegex.php">
      <class name="MediaWiki\Extension\BounceHandler\ProcessBounceWithRegex" namespace="global">
        <metrics complexity="26" methods="4" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="49" coveredstatements="42" elements="53" coveredelements="44"/>
      </class>
      <line num="20" type="method" name="handleBounce" visibility="public" complexity="2" crap="6" 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="36" type="method" name="parseMessagePart" visibility="private" complexity="5" crap="5" count="1"/>
      <line num="37" type="stmt" count="1"/>
      <line num="39" type="stmt" count="1"/>
      <line num="40" type="stmt" count="1"/>
      <line num="42" type="stmt" count="1"/>
      <line num="44" type="stmt" count="1"/>
      <line num="45" type="stmt" count="1"/>
      <line num="48" type="stmt" count="1"/>
      <line num="57" type="method" name="parseDeliveryStatusMessage" visibility="private" complexity="5" crap="5" count="4"/>
      <line num="58" type="stmt" count="4"/>
      <line num="59" type="stmt" count="4"/>
      <line num="60" type="stmt" count="4"/>
      <line num="61" type="stmt" count="4"/>
      <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="71" type="stmt" count="3"/>
      <line num="80" type="method" name="extractHeaders" visibility="public" complexity="14" crap="14.08" 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="87" type="stmt" count="4"/>
      <line num="88" type="stmt" count="4"/>
      <line num="90" type="stmt" count="4"/>
      <line num="91" type="stmt" count="4"/>
      <line num="93" type="stmt" count="4"/>
      <line num="94" type="stmt" count="1"/>
      <line num="96" type="stmt" count="4"/>
      <line num="98" type="stmt" count="4"/>
      <line num="101" type="stmt" count="4"/>
      <line num="102" type="stmt" count="4"/>
      <line num="103" type="stmt" count="1"/>
      <line num="108" type="stmt" count="4"/>
      <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="116" type="stmt" count="2"/>
      <line num="117" type="stmt" count="0"/>
      <line num="118" type="stmt" count="0"/>
      <line num="123" type="stmt" count="4"/>
      <metrics loc="127" ncloc="92" classes="1" methods="4" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="49" coveredstatements="42" elements="53" coveredelements="44"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/ProcessUnRecognizedBounces.php">
      <class name="MediaWiki\Extension\BounceHandler\ProcessUnRecognizedBounces" namespace="global">
        <metrics complexity="4" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="19" 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="29" type="stmt" count="0"/>
      <line num="37" type="method" name="processUnRecognizedBounces" visibility="public" complexity="3" crap="12" 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="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"/>
      <metrics loc="57" ncloc="38" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="17" coveredstatements="0" elements="19" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/PruneOldBounceRecords.php">
      <class name="MediaWiki\Extension\BounceHandler\PruneOldBounceRecords" namespace="global">
        <metrics complexity="5" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="25" elements="28" coveredelements="28"/>
      </class>
      <line num="18" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="2"/>
      <line num="19" type="stmt" count="2"/>
      <line num="25" type="method" name="pruneOldRecords" visibility="public" complexity="2" crap="2" count="2"/>
      <line num="26" type="stmt" count="2"/>
      <line num="27" type="stmt" count="2"/>
      <line num="28" type="stmt" count="2"/>
      <line num="29" type="stmt" count="2"/>
      <line num="30" type="stmt" count="2"/>
      <line num="31" 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="37" type="stmt" count="2"/>
      <line num="46" type="method" name="getOldRecords" visibility="private" complexity="2" crap="2" 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="2"/>
      <line num="51" type="stmt" count="2"/>
      <line num="52" 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="57" type="stmt" count="2"/>
      <line num="58" type="stmt" count="2"/>
      <line num="61" type="stmt" count="2"/>
      <metrics loc="65" ncloc="48" classes="1" methods="3" coveredmethods="3" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="25" elements="28" coveredelements="28"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/SchemaHooks.php">
      <class name="MediaWiki\Extension\BounceHandler\SchemaHooks" namespace="global">
        <metrics complexity="2" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="19" coveredelements="0"/>
      </class>
      <line num="20" type="method" name="onLoadExtensionSchemaUpdates" visibility="public" complexity="2" crap="6" 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="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="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="40" type="stmt" count="0"/>
      <line num="41" type="stmt" count="0"/>
      <metrics loc="45" ncloc="32" classes="1" methods="1" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="18" coveredstatements="0" elements="19" coveredelements="0"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/includes/VerpAddressGenerator.php">
      <class name="MediaWiki\Extension\BounceHandler\VerpAddressGenerator" namespace="global">
        <metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/>
      </class>
      <line num="28" type="method" name="__construct" visibility="public" complexity="1" crap="1" 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="32" type="stmt" count="1"/>
      <line num="50" type="method" name="generateVERP" visibility="public" complexity="1" crap="1" count="1"/>
      <line num="52" type="stmt" count="1"/>
      <line num="53" 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"/>
      <metrics loc="68" ncloc="37" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="13" coveredstatements="13" elements="15" coveredelements="15"/>
    </file>
    <file name="/workspace/src/extensions/BounceHandler/maintenance/invalidateEmail.php">
      <class name="InvalidateEmail" namespace="global">
        <metrics complexity="8" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="31" coveredstatements="0" elements="33" coveredelements="0"/>
      </class>
      <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="34" type="method" name="__construct" visibility="public" complexity="1" crap="2" 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="40" type="stmt" count="0"/>
      <line num="43" type="method" name="execute" visibility="public" complexity="7" crap="56" 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="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="54" type="stmt" count="0"/>
      <line num="55" 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="68" type="stmt" count="0"/>
      <line num="69" 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="80" type="stmt" count="0"/>
      <line num="81" type="stmt" count="0"/>
      <metrics loc="82" ncloc="60" classes="1" methods="2" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="37" coveredstatements="0" elements="39" coveredelements="0"/>
    </file>
    <metrics files="14" loc="1260" ncloc="905" classes="14" methods="48" coveredmethods="13" conditionals="0" coveredconditionals="0" statements="462" coveredstatements="175" elements="510" coveredelements="188"/>
  </project>
</coverage>
