<?xml version="1.0" ?>
<informationTable xsi:schemaLocation="http://www.sec.gov/edgar/document/thirteenf/informationtable eis_13FDocument.xsd" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable" xmlns:n1="http://www.sec.gov/edgar/document/thirteenf/informationtable" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <infoTable>
    <nameOfIssuer>AAON INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>000360206</cusip>
    <value>22912151</value>
    <shrsOrPrnAmt>
      <sshPrnamt>276884</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>129622</Sole>
      <Shared>0</Shared>
      <None>147262</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ACI WORLDWIDE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>004498101</cusip>
    <value>754994</value>
    <shrsOrPrnAmt>
      <sshPrnamt>18410</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>410</Sole>
      <Shared>0</Shared>
      <None>18000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AEROVIRONMENT INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>008073108</cusip>
    <value>79876979</value>
    <shrsOrPrnAmt>
      <sshPrnamt>436367</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>178616</Sole>
      <Shared>0</Shared>
      <None>257751</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ALARM.COM HOLDINGS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>011642105</cusip>
    <value>3014835</value>
    <shrsOrPrnAmt>
      <sshPrnamt>69804</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7745</Sole>
      <Shared>0</Shared>
      <None>62059</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>APPLE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>037833100</cusip>
    <value>710612</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2800</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2800</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>AZENTA INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>114340102</cusip>
    <value>27384987</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1296024</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>582862</Sole>
      <Shared>0</Shared>
      <None>713162</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BADGER METER INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>056525108</cusip>
    <value>28312876</value>
    <shrsOrPrnAmt>
      <sshPrnamt>185841</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>73819</Sole>
      <Shared>0</Shared>
      <None>112022</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BALCHEM CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>057665200</cusip>
    <value>3406887</value>
    <shrsOrPrnAmt>
      <sshPrnamt>20102</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>952</Sole>
      <Shared>0</Shared>
      <None>19150</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BIO-TECHNE CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09073M104</cusip>
    <value>53364149</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1021128</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>485458</Sole>
      <Shared>0</Shared>
      <None>535670</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BLACKBAUD INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>09227Q100</cusip>
    <value>499227</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12930</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>9720</Sole>
      <Shared>0</Shared>
      <None>3210</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>CERENCE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>156727109</cusip>
    <value>15896714</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2519289</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1385539</Sole>
      <Shared>0</Shared>
      <None>1133750</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>COGNEX CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>192422103</cusip>
    <value>13302402</value>
    <shrsOrPrnAmt>
      <sshPrnamt>271533</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>106151</Sole>
      <Shared>0</Shared>
      <None>165382</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>COGNYTE SOFTWARE LTD</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>M25133105</cusip>
    <value>52619301</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6496210</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3083485</Sole>
      <Shared>0</Shared>
      <None>3412725</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>COMMVAULT SYSTEMS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>204166102</cusip>
    <value>42126417</value>
    <shrsOrPrnAmt>
      <sshPrnamt>540845</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>258561</Sole>
      <Shared>0</Shared>
      <None>282284</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>COSTAR GROUP INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>22160N109</cusip>
    <value>33292441</value>
    <shrsOrPrnAmt>
      <sshPrnamt>825296</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>395122</Sole>
      <Shared>0</Shared>
      <None>430174</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DESCARTES SYSTEMS GROUP INC (THE)</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>249906108</cusip>
    <value>1369515</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19138</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6283</Sole>
      <Shared>0</Shared>
      <None>12855</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DEXCOM INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>252131107</cusip>
    <value>15792630</value>
    <shrsOrPrnAmt>
      <sshPrnamt>251475</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>139543</Sole>
      <Shared>0</Shared>
      <None>111932</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DORMAN PRODUCTS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>258278100</cusip>
    <value>6306997</value>
    <shrsOrPrnAmt>
      <sshPrnamt>60435</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>5470</Sole>
      <Shared>0</Shared>
      <None>54965</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DYNATRACE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>268150109</cusip>
    <value>38986794</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1054267</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>511783</Sole>
      <Shared>0</Shared>
      <None>542484</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ESCO TECHNOLOGIES INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>296315104</cusip>
    <value>10808547</value>
    <shrsOrPrnAmt>
      <sshPrnamt>38414</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>25682</Sole>
      <Shared>0</Shared>
      <None>12732</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FACTSET RESEARCH SYSTEMS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>303075105</cusip>
    <value>9332306</value>
    <shrsOrPrnAmt>
      <sshPrnamt>43008</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>7677</Sole>
      <Shared>0</Shared>
      <None>35331</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FORTINET INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>34959E109</cusip>
    <value>67739588</value>
    <shrsOrPrnAmt>
      <sshPrnamt>828923</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>236922</Sole>
      <Shared>0</Shared>
      <None>592001</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>FRANKLIN ELECTRIC CO INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>353514102</cusip>
    <value>2027740</value>
    <shrsOrPrnAmt>
      <sshPrnamt>22000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>22000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>GENTEX CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>371901109</cusip>
    <value>11675679</value>
    <shrsOrPrnAmt>
      <sshPrnamt>534356</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>217193</Sole>
      <Shared>0</Shared>
      <None>317163</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>GLOBUS MEDICAL INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>379577208</cusip>
    <value>57128302</value>
    <shrsOrPrnAmt>
      <sshPrnamt>663049</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>334297</Sole>
      <Shared>0</Shared>
      <None>328752</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>GRAHAM CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>384556106</cusip>
    <value>4065958</value>
    <shrsOrPrnAmt>
      <sshPrnamt>51520</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4595</Sole>
      <Shared>0</Shared>
      <None>46925</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>GUIDEWIRE SOFTWARE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>40171V100</cusip>
    <value>48486754</value>
    <shrsOrPrnAmt>
      <sshPrnamt>324196</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>129325</Sole>
      <Shared>0</Shared>
      <None>194871</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>HAEMONETICS CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>405024100</cusip>
    <value>3771329</value>
    <shrsOrPrnAmt>
      <sshPrnamt>66915</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>37420</Sole>
      <Shared>0</Shared>
      <None>29495</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>HOLOGIC INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>436440101</cusip>
    <value>1230605</value>
    <shrsOrPrnAmt>
      <sshPrnamt>16280</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>15900</Sole>
      <Shared>0</Shared>
      <None>380</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ICON PLC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>G4705A100</cusip>
    <value>361858</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3270</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>3270</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IDEXX LABORATORIES INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>45168D104</cusip>
    <value>93305206</value>
    <shrsOrPrnAmt>
      <sshPrnamt>166056</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>76448</Sole>
      <Shared>0</Shared>
      <None>89608</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ILLUMINA INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>452327109</cusip>
    <value>273637</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2220</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2000</Sole>
      <Shared>0</Shared>
      <None>220</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>INSULET CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>45784P101</cusip>
    <value>4044666</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19275</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1150</Sole>
      <Shared>0</Shared>
      <None>18125</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>IPG PHOTONICS CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>44980X109</cusip>
    <value>23939914</value>
    <shrsOrPrnAmt>
      <sshPrnamt>208918</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>108075</Sole>
      <Shared>0</Shared>
      <None>100843</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES TRUST</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464288240</cusip>
    <value>208149</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3040</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3040</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ISHARES TRUST</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>464287457</cusip>
    <value>2187279</value>
    <shrsOrPrnAmt>
      <sshPrnamt>26490</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3760</Sole>
      <Shared>0</Shared>
      <None>22730</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>JACK HENRY &amp; ASSOCIATES INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>426281101</cusip>
    <value>38415573</value>
    <shrsOrPrnAmt>
      <sshPrnamt>243075</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>93347</Sole>
      <Shared>0</Shared>
      <None>149728</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>JFROG LTD</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>M6191J100</cusip>
    <value>609104</value>
    <shrsOrPrnAmt>
      <sshPrnamt>12979</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>12979</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>KORNIT DIGITAL LTD</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>M6372Q113</cusip>
    <value>4148428</value>
    <shrsOrPrnAmt>
      <sshPrnamt>282976</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>81290</Sole>
      <Shared>0</Shared>
      <None>201686</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>KRATOS DEFENSE &amp; SECURITY SOLUTIONS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>50077B207</cusip>
    <value>75580233</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1071908</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>507180</Sole>
      <Shared>0</Shared>
      <None>564728</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>LIVE RAMP HOLDINGS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>53815P108</cusip>
    <value>49422380</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1863589</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>810058</Sole>
      <Shared>0</Shared>
      <None>1053531</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MACOM TECHNOLOGY SOLUTIONS HOLDINGS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>55405Y100</cusip>
    <value>872513</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3929</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>778</Sole>
      <Shared>0</Shared>
      <None>3151</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MANHATTAN ASSOCIATES INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>562750109</cusip>
    <value>47631268</value>
    <shrsOrPrnAmt>
      <sshPrnamt>357807</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>176203</Sole>
      <Shared>0</Shared>
      <None>181604</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MEDPACE HOLDINGS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58506Q109</cusip>
    <value>104655970</value>
    <shrsOrPrnAmt>
      <sshPrnamt>217947</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>89704</Sole>
      <Shared>0</Shared>
      <None>128243</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MERCK &amp; COMPANY INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>58933Y105</cusip>
    <value>252609</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2100</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>2100</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MERIT MEDICAL SYSTEMS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>589889104</cusip>
    <value>7980371</value>
    <shrsOrPrnAmt>
      <sshPrnamt>115775</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>6199</Sole>
      <Shared>0</Shared>
      <None>109576</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MONOLITHIC POWER SYSTEMS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>609839105</cusip>
    <value>6909972</value>
    <shrsOrPrnAmt>
      <sshPrnamt>6320</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1474</Sole>
      <Shared>0</Shared>
      <None>4846</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MORNINGSTAR INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>617700109</cusip>
    <value>18314877</value>
    <shrsOrPrnAmt>
      <sshPrnamt>108340</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>68897</Sole>
      <Shared>0</Shared>
      <None>39443</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NCINO INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>63947X101</cusip>
    <value>35583432</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2375396</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1099788</Sole>
      <Shared>0</Shared>
      <None>1275608</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NEOGEN CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>640491106</cusip>
    <value>1241674</value>
    <shrsOrPrnAmt>
      <sshPrnamt>133657</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>127010</Sole>
      <Shared>0</Shared>
      <None>6647</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NEOGENOMICS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>64049M209</cusip>
    <value>16701515</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2250878</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>373193</Sole>
      <Shared>0</Shared>
      <None>1877685</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NICE LTD</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>653656108</cusip>
    <value>17376204</value>
    <shrsOrPrnAmt>
      <sshPrnamt>157593</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>30692</Sole>
      <Shared>0</Shared>
      <None>126901</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NOVANTA INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>67000B104</cusip>
    <value>44158258</value>
    <shrsOrPrnAmt>
      <sshPrnamt>373874</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>169029</Sole>
      <Shared>0</Shared>
      <None>204845</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NOVANTA INC</nameOfIssuer>
    <titleOfClass>CONV PR</titleOfClass>
    <cusip>67000B203</cusip>
    <value>541764</value>
    <shrsOrPrnAmt>
      <sshPrnamt>10100</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>795</Sole>
      <Shared>0</Shared>
      <None>9305</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>O'REILLY AUTOMOTIVE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>67103H107</cusip>
    <value>7960353</value>
    <shrsOrPrnAmt>
      <sshPrnamt>86235</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>86235</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PALO ALTO NETWORKS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>697435105</cusip>
    <value>100053088</value>
    <shrsOrPrnAmt>
      <sshPrnamt>624084</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>241685</Sole>
      <Shared>0</Shared>
      <None>382399</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>PROTO LABS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>743713109</cusip>
    <value>35791739</value>
    <shrsOrPrnAmt>
      <sshPrnamt>627705</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>313861</Sole>
      <Shared>0</Shared>
      <None>313844</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>QUAKER CHEMICAL CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>747316107</cusip>
    <value>4800496</value>
    <shrsOrPrnAmt>
      <sshPrnamt>38642</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2188</Sole>
      <Shared>0</Shared>
      <None>36454</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>QUALYS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74758T303</cusip>
    <value>7357613</value>
    <shrsOrPrnAmt>
      <sshPrnamt>83752</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>19360</Sole>
      <Shared>0</Shared>
      <None>64392</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RBC BEARINGS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>75524B104</cusip>
    <value>95286602</value>
    <shrsOrPrnAmt>
      <sshPrnamt>175443</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>68355</Sole>
      <Shared>0</Shared>
      <None>107088</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>REPLIGEN CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>759916109</cusip>
    <value>42146570</value>
    <shrsOrPrnAmt>
      <sshPrnamt>357720</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>153436</Sole>
      <Shared>0</Shared>
      <None>204284</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>RESMED INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>761152107</cusip>
    <value>59576768</value>
    <shrsOrPrnAmt>
      <sshPrnamt>265399</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>111929</Sole>
      <Shared>0</Shared>
      <None>153470</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SEI INVESTMENTS CO</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>784117103</cusip>
    <value>60313219</value>
    <shrsOrPrnAmt>
      <sshPrnamt>768615</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>352107</Sole>
      <Shared>0</Shared>
      <None>416508</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPDR S&amp;P 500 ETF TRUST</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78462F103</cusip>
    <value>1577075</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2425</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2330</Sole>
      <Shared>0</Shared>
      <None>95</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPDR S&amp;P MIDCAP 400 ETF TRUST</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78467Y107</cusip>
    <value>217716</value>
    <shrsOrPrnAmt>
      <sshPrnamt>353</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>353</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SPS COMMERCE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78463M107</cusip>
    <value>4791851</value>
    <shrsOrPrnAmt>
      <sshPrnamt>86076</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>16588</Sole>
      <Shared>0</Shared>
      <None>69488</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>STAAR SURGICAL CO</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>852312305</cusip>
    <value>16419255</value>
    <shrsOrPrnAmt>
      <sshPrnamt>878035</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>503353</Sole>
      <Shared>0</Shared>
      <None>374682</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SYNOPSYS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>871607107</cusip>
    <value>7712725</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19453</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4560</Sole>
      <Shared>0</Shared>
      <None>14893</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TRADEWEB MARKETS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>892672106</cusip>
    <value>29326402</value>
    <shrsOrPrnAmt>
      <sshPrnamt>249247</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>85245</Sole>
      <Shared>0</Shared>
      <None>164002</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TRIMBLE INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>896239100</cusip>
    <value>1239370</value>
    <shrsOrPrnAmt>
      <sshPrnamt>19000</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>0</Sole>
      <Shared>0</Shared>
      <None>19000</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>TYLER TECHNOLOGIES INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>902252105</cusip>
    <value>33875762</value>
    <shrsOrPrnAmt>
      <sshPrnamt>98942</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>41844</Sole>
      <Shared>0</Shared>
      <None>57098</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VARONIS SYSTEMS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>922280102</cusip>
    <value>49990297</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2328379</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1178985</Sole>
      <Shared>0</Shared>
      <None>1149394</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VEEVA SYSTEMS INC</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>922475108</cusip>
    <value>36224254</value>
    <shrsOrPrnAmt>
      <sshPrnamt>206218</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>80094</Sole>
      <Shared>0</Shared>
      <None>126124</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VSE CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>918284100</cusip>
    <value>15636198</value>
    <shrsOrPrnAmt>
      <sshPrnamt>84795</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>48749</Sole>
      <Shared>0</Shared>
      <None>36046</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>ZEBRA TECHNOLOGIES CORP</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>989207105</cusip>
    <value>689964</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3300</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3300</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
</informationTable>
