
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | ||||||||||||||||||||||||||||
| Market cap | $69,460 | $79,871 | $98,570 | $91,018 | $92,501 | $81,564 | $76,835 | $55,841 | $59,705 | $61,839 | $62,551 | $61,434 | $62,622 | $45,225 | – | – | – | – | – | – | – | – | – | $44,105 | $35,822 | $30,089 | $29,874 | $29,799 |
| Enterprise value | $89,721 | $96,869 | $116,665 | $112,649 | $108,973 | $98,506 | $94,412 | $73,189 | $76,676 | $77,351 | $76,167 | $76,562 | $77,238 | $60,315 | – | – | – | – | – | – | – | – | – | $58,333 | $51,667 | $55,724 | – | – |
| P/E (TTM) at period end | 28.34× | 17.32× | 19.88× | 33.50× | 21.51× | 22.94× | 19.56× | 16.83× | 21.11× | 37.82× | 8.61× | 28.13× | 16.00× | 14.75× | – | – | – | – | – | – | – | – | – | 12.99× | 19.03× | 15.04× | 17.04× | 18.26× |
| P/S (TTM) at period end | 1.80× | 2.19× | 2.74× | 2.89× | 3.22× | 3.07× | 2.97× | 2.15× | 2.31× | 2.39× | 2.11× | 1.79× | 1.77× | 1.29× | – | – | – | – | – | – | – | – | – | 1.51× | 1.23× | 1.31× | 1.28× | 1.23× |
| P/B at period end | 2.69× | 2.97× | 3.48× | 3.39× | 3.27× | 2.96× | 2.82× | 2.18× | 2.30× | 2.46× | 2.23× | 2.21× | 1.93× | 1.40× | – | – | – | – | – | – | – | – | – | 1.71× | 1.53× | 2.14× | 2.22× | 1.97× |
| EV / EBITDA (TTM) | 18.29× | 12.67× | 17.37× | 24.27× | 18.90× | 19.82× | 19.31× | 17.75× | 17.92× | 22.91× | 7.78× | 17.80× | 15.30× | 12.11× | – | – | – | – | – | – | – | – | – | 8.74× | 7.92× | 11.04× | – | – |
| EV / Sales (TTM) | 2.33× | 2.66× | 3.24× | 3.58× | 3.79× | 3.71× | 3.65× | 2.82× | 2.96× | 2.98× | 2.57× | 2.24× | 2.19× | 1.72× | – | – | – | – | – | – | – | – | – | 1.99× | 1.77× | 2.43× | – | – |
| Returns | ||||||||||||||||||||||||||||
| Return on equity | 9.5% | 17.1% | 17.5% | 10.1% | 15.2% | 12.9% | 14.4% | 12.9% | 10.9% | 6.5% | 25.9% | 7.9% | 12.1% | 9.5% | 10.1% | 11.5% | 11.7% | 12.9% | 9.9% | 10.7% | 8.9% | 8.9% | 12.2% | 13.1% | 8.0% | 14.2% | 13.0% | 10.8% |
| Return on invested capital | 5.7% | 11.1% | 8.8% | 5.3% | 7.6% | 5.5% | 8.6% | 5.6% | 6.3% | 5.8% | 19.8% | 6.5% | 8.2% | 7.0% | 5.4% | 3.7% | 8.6% | 6.2% | 6.1% | 8.2% | 8.4% | 7.4% | 9.2% | 9.6% | 6.8% | 5.9% | 26.6% | 23.4% |
| Dividend yield | 3.6% | 2.9% | 2.2% | 2.2% | 2.0% | 2.1% | 2.0% | 2.4% | 2.0% | 1.8% | 1.6% | 1.6% | 1.5% | 4.6% | – | – | – | – | – | – | – | – | – | 2.1% | 0.6% | 3.4% | – | – |
| Financial health | ||||||||||||||||||||||||||||
| Current ratio | 0.59× | 0.68× | 0.62× | 0.60× | 0.74× | 0.66× | 0.50× | 0.45× | 0.48× | 0.59× | 0.82× | 0.84× | 0.92× | 1.05× | 0.88× | 1.02× | 1.08× | 1.04× | 0.64× | 0.79× | 0.93× | 1.07× | 1.03× | 1.04× | 0.79× | 0.94× | – | – |
| Debt / equity | 0.77× | 0.58× | 0.61× | 0.84× | 0.63× | 0.63× | 0.62× | 0.61× | 0.63× | 0.63× | 0.53× | 0.55× | 0.50× | 0.49× | 0.66× | 0.77× | 0.71× | 0.87× | 0.74× | 0.38× | 0.36× | 0.42× | 0.47× | 0.56× | 0.68× | 1.84× | – | – |
| Effective tax rate | 25.9% | 23.5% | 26.1% | 26.8% | 27.2% | 36.2% | 0.1% | 27.2% | 21.3% | 7.8% | 7.5% | 13.8% | 2.5% | 9.5% | 6.2% | 7.4% | 28.8% | 28.2% | 30.2% | 22.4% | 29.4% | 32.3% | 34.9% | 35.5% | 45.4% | 41.4% | – | – |
| Share count | ||||||||||||||||||||||||||||
| Diluted shares outstanding | 1,298 | 1,347 | 1,370 | 1,385 | 1,413 | 1,441 | 1,458 | 1,486 | 1,531 | 1,573 | 1,637 | 1,709 | 1,789 | 1,789 | 1,772 | 1,720 | 1,486 | 1,515 | 1,594 | 1,654 | 1,698 | 1,719 | 1,729 | 1,732 | 1,609 | 1,471 | 1,461 | 1,457 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 | FY2007 | FY2006 | FY2005 | FY2004 | FY2003 | FY2002 | FY2001 | FY2000 | FY1999 | FY1998 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | |||||||||||||||||||||||||||||
| Revenue | $39,675 | $38,537 | $36,441 | $36,016 | $31,496 | $28,720 | $26,581 | $25,868 | $25,938 | $25,896 | $25,923 | $29,636 | $34,244 | $35,299 | $35,015 | $35,810 | $31,489 | $38,754 | $40,492 | $35,858 | $33,018 | $34,113 | $32,168 | $30,498 | $29,248 | $29,234 | $22,922 | $23,430 | $24,140 |
| Cost of revenue | ($27,318) | ($27,602) | ($22,184) | ($22,252) | ($20,184) | ($17,466) | ($16,135) | ($15,531) | ($15,586) | ($15,831) | ($15,795) | ($18,124) | ($21,647) | ($22,189) | ($21,939) | ($22,710) | ($19,617) | ($24,819) | ($27,164) | ($23,656) | ($21,190) | ($21,845) | ($20,281) | ($18,531) | ($17,463) | ($17,566) | ($13,959) | ($14,615) | ($15,586) |
| Gross profit | $12,357 | $10,935 | $14,257 | $13,764 | $11,312 | $11,254 | $10,446 | $10,337 | $10,352 | $10,034 | $10,104 | $11,512 | $12,597 | $13,110 | $13,076 | $13,100 | $11,872 | $13,935 | $13,328 | $12,202 | $11,828 | $12,268 | $11,887 | $11,967 | $11,785 | $11,668 | $8,963 | $8,815 | $8,554 |
| Operating expenses | |||||||||||||||||||||||||||||
| Research and development | – | ($400) | ($400) | ($380) | ($346) | ($347) | ($332) | ($351) | ($362) | ($366) | ($376) | ($409) | ($455) | ($471) | ($462) | ($511) | ($404) | ($466) | ($487) | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | ($7,654) | ($7,173) | ($7,439) | ($8,002) | ($7,384) | ($6,263) | ($6,098) | ($6,136) | ($6,475) | ($5,938) | ($6,546) | ($7,577) | ($8,457) | ($8,679) | ($9,176) | ($9,382) | ($9,140) | ($8,784) | ($8,613) | ($7,587) | ($7,032) | ($7,138) | ($6,658) | ($6,136) | ($5,644) | ($5,748) | ($4,588) | – | – |
| Total operating expenses | ($7,907) | ($7,387) | ($7,912) | ($8,262) | ($7,778) | ($6,601) | ($6,593) | ($6,494) | ($7,040) | ($6,572) | ($7,550) | ($2,615) | ($9,355) | ($9,139) | ($9,439) | ($9,602) | ($9,376) | ($8,752) | ($9,752) | ($8,026) | ($7,670) | ($7,519) | ($7,275) | ($6,107) | ($5,824) | ($6,784) | ($4,951) | ($5,236) | ($5,019) |
| Total costs and expenses | ($35,225) | ($34,989) | ($30,096) | ($30,514) | ($27,962) | ($24,067) | ($22,728) | ($22,025) | ($22,626) | ($22,434) | ($23,369) | ($20,739) | ($31,002) | ($31,328) | ($31,378) | ($32,312) | ($28,993) | ($33,571) | ($36,916) | ($31,682) | ($28,860) | ($29,364) | ($27,556) | ($24,638) | ($23,287) | ($24,350) | ($18,910) | ($19,851) | ($20,605) |
| Operating income | $4,450 | $3,548 | $6,345 | $5,502 | $3,534 | $4,653 | $3,853 | $3,843 | $3,312 | $3,462 | $2,554 | $8,897 | $3,242 | $3,971 | $3,637 | $3,498 | $2,496 | $5,183 | $3,576 | $4,176 | $4,158 | $4,749 | $4,612 | $5,860 | $5,961 | $4,884 | $4,012 | $3,579 | $3,535 |
| Earnings | |||||||||||||||||||||||||||||
| EBITDA | $5,838 | $4,906 | $7,647 | $6,717 | $4,641 | $5,766 | $4,969 | $4,890 | $4,123 | $4,278 | $3,377 | $9,791 | $4,301 | $5,048 | $4,982 | $4,983 | $3,936 | $6,114 | $4,562 | $5,062 | $5,049 | $5,628 | $5,491 | $6,673 | $6,677 | $6,526 | $5,046 | – | – |
| Interest income | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Interest expense | ($603) | ($599) | ($508) | ($550) | ($428) | ($365) | ($423) | ($484) | ($462) | ($396) | ($515) | ($609) | ($778) | ($1,017) | ($1,863) | ($1,618) | ($1,770) | ($1,237) | ($1,240) | ($604) | ($510) | – | – | – | – | – | – | – | – |
| Pre-tax income | $4,288 | $3,014 | $6,261 | $5,880 | $3,228 | $4,369 | $3,383 | $3,447 | $2,842 | $3,124 | $1,454 | $7,884 | $2,554 | $2,392 | $1,774 | $1,880 | $726 | $3,946 | $2,336 | $3,572 | $3,648 | $4,113 | $3,943 | $5,191 | $5,110 | $3,447 | $3,415 | $1,753 | $1,632 |
| Income tax expense | ($990) | ($782) | ($1,469) | ($1,537) | ($865) | ($1,190) | ($1,224) | ($2) | ($773) | ($666) | ($114) | ($593) | ($353) | ($60) | ($168) | ($116) | ($54) | ($1,136) | ($658) | ($1,080) | ($816) | ($1,209) | ($1,274) | ($1,812) | ($1,813) | ($1,565) | ($1,414) | – | – |
| Net income | $3,516 | $2,451 | $4,611 | $4,959 | $2,717 | $4,300 | $3,555 | $3,929 | $3,317 | $2,828 | $1,635 | $7,267 | $2,184 | $3,915 | $3,067 | $3,554 | $4,114 | $3,021 | $2,884 | $2,721 | $3,060 | $2,632 | $2,665 | $3,476 | $3,394 | $1,882 | $2,001 | $1,753 | $1,632 |
| Per share | |||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $2.72 | $1.89 | $3.42 | $3.62 | $1.96 | $3.04 | $2.47 | $2.69 | $2.23 | $1.85 | $1.04 | $4.44 | $1.28 | $2.19 | $1.71 | $2.01 | $2.39 | $2.03 | $1.90 | $1.70 | $1.84 | $1.55 | $1.55 | $2.01 | $1.96 | $1.17 | $1.36 | $1.20 | $1.12 |
| Basic EPS (GAAP) | $2.74 | $1.89 | $3.44 | $3.64 | $1.97 | $3.06 | $2.48 | $2.72 | $2.25 | $1.87 | $1.05 | $4.49 | $1.29 | $2.21 | $1.73 | $2.01 | $2.40 | $2.04 | $1.92 | $1.71 | $1.84 | $1.56 | $1.56 | $2.01 | $1.96 | $1.17 | $1.36 | $1.20 | $1.12 |
| Basic shares outstanding | 1,287 | 1,294 | 1,341 | 1,363 | 1,378 | 1,403 | 1,431 | 1,445 | 1,472 | 1,513 | 1,556 | 1,618 | 1,691 | 1,774 | 1,777 | 1,765 | 1,715 | 1,478 | 1,505 | 1,575 | 1,645 | 1,687 | 1,708 | 1,729 | 1,732 | 1,609 | 1,471 | 1,461 | 1,457 |
| Margins | |||||||||||||||||||||||||||||
| Gross margin | 31.1% | 28.4% | 39.1% | 38.2% | 35.9% | 39.2% | 39.3% | 40.0% | 39.9% | 38.7% | 39.0% | 38.8% | 36.8% | 37.1% | 37.3% | 36.6% | 37.7% | 36.0% | 32.9% | 34.0% | 35.8% | 36.0% | 37.0% | 39.2% | 40.3% | 39.9% | 39.1% | 37.6% | 35.4% |
| Operating margin | 11.2% | 9.2% | 17.4% | 15.3% | 11.2% | 16.2% | 14.5% | 14.9% | 12.8% | 13.4% | 9.9% | 30.0% | 9.5% | 11.2% | 10.4% | 9.8% | 7.9% | 13.4% | 8.8% | 11.6% | 12.6% | 13.9% | 14.3% | 19.2% | 20.4% | 16.7% | 17.5% | 15.3% | 14.6% |
| Net margin | 8.9% | 6.4% | 12.7% | 13.8% | 8.6% | 15.0% | 13.4% | 15.2% | 12.8% | 10.9% | 6.3% | 24.5% | 6.4% | 11.1% | 8.8% | 9.9% | 13.1% | 7.8% | 7.1% | 7.6% | 9.3% | 7.7% | 8.3% | 11.4% | 11.6% | 6.4% | 8.7% | 7.5% | 6.8% |