
| 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 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | |||||||||||||||||||||||||||||||||||||||||
| Market cap | $100,742 | $56,490 | $101,613 | $122,449 | $136,177 | $90,160 | $98,067 | $86,490 | $73,442 | $104,166 | $129,062 | $111,816 | $87,101 | $61,453 | $54,564 | $47,531 | $46,189 | $41,213 | $52,796 | $25,365 | $21,437 | $18,044 | $14,187 | $9,800 | $11,564 | $23,444 | $15,605 | $21,290 | $12,031 | $4,409 | $3,322 | $3,262 | $5,334 | $5,582 | $4,604 | $4,310 | $4,871 | $4,053 | $2,866 | $2,923 | $2,733 |
| Enterprise value | $183,905 | $128,587 | $169,718 | $177,758 | $199,957 | $164,660 | $179,319 | $153,656 | $98,641 | $128,243 | $153,986 | $122,196 | $96,326 | $69,901 | $63,190 | $56,191 | $56,273 | $51,615 | $62,194 | $29,892 | $23,113 | $20,494 | $14,420 | $10,212 | $12,401 | $24,255 | $16,402 | $22,172 | $12,594 | $5,121 | $3,666 | $3,785 | $5,779 | $5,944 | $5,107 | $4,737 | $5,001 | $3,814 | $2,589 | $2,668 | $2,544 |
| P/E (TTM) at period end | 56.98× | 12.24× | 12.18× | 28.40× | 17.02× | 12.56× | 14.79× | – | 11.13× | 19.69× | 24.64× | 24.08× | 18.97× | 15.90× | 15.76× | 13.87× | 12.50× | 12.89× | 20.13× | 18.53× | 17.50× | 19.64× | 16.74× | 13.68× | 27.99× | 31.43× | 24.57× | 55.37× | 135.48× | 21.18× | – | 10.61× | 16.08× | 41.85× | 13.28× | 11.19× | 12.24× | 11.43× | 10.04× | 12.27× | 13.00× |
| P/S (TTM) at period end | 0.25× | 0.15× | 0.28× | 0.38× | 0.47× | 0.34× | 0.38× | 0.44× | 0.40× | 0.59× | 0.84× | 0.80× | 0.69× | 0.50× | 0.51× | 0.50× | 0.47× | 0.47× | 0.69× | 0.58× | 0.58× | 0.59× | 0.53× | 0.41× | 0.52× | 1.17× | 0.86× | 1.39× | 0.88× | 0.37× | 0.34× | 0.29× | 0.51× | 0.54× | 0.47× | 0.50× | 0.64× | 0.60× | 0.48× | 0.56× | 0.57× |
| P/B at period end | 1.34× | 0.75× | 1.33× | 1.71× | 1.83× | 1.30× | 1.54× | 1.49× | 1.95× | 2.83× | 3.47× | 2.95× | 2.30× | 1.63× | 1.43× | 1.26× | 1.29× | 1.19× | 1.69× | 2.56× | 2.57× | 2.58× | 2.36× | 1.89× | 2.53× | 5.45× | 4.24× | 6.84× | 4.60× | 2.01× | 2.14× | 1.37× | 2.37× | 2.69× | 2.20× | 2.33× | 3.01× | 2.38× | 1.96× | 2.31× | 2.48× |
| EV / EBITDA (TTM) | 19.85× | 9.81× | 9.37× | 14.60× | 11.24× | 8.97× | 10.96× | 22.80× | 8.21× | 9.97× | 13.31× | 11.39× | 9.72× | 7.80× | 8.00× | 7.39× | 7.20× | 7.05× | 10.56× | 9.42× | 8.86× | 10.82× | 8.17× | 6.73× | 11.36× | 14.98× | 11.60× | 18.79× | 13.30× | 5.90× | 5.06× | 4.63× | 7.09× | 10.58× | 6.32× | 6.08× | 6.59× | – | – | – | – |
| EV / Sales (TTM) | 0.46× | 0.34× | 0.47× | 0.55× | 0.68× | 0.61× | 0.70× | 0.79× | 0.53× | 0.72× | 1.00× | 0.88× | 0.76× | 0.57× | 0.59× | 0.59× | 0.57× | 0.59× | 0.81× | 0.68× | 0.62× | 0.67× | 0.54× | 0.42× | 0.56× | 1.21× | 0.91× | 1.45× | 0.92× | 0.43× | 0.38× | 0.34× | 0.55× | 0.57× | 0.52× | 0.55× | 0.66× | 0.56× | 0.44× | 0.51× | 0.53× |
| Returns | |||||||||||||||||||||||||||||||||||||||||
| Return on equity | 2.4% | 6.1% | 10.9% | 6.0% | 10.7% | 10.3% | 10.4% | (1.0%) | 17.5% | 14.4% | 14.1% | 12.2% | 12.1% | 10.3% | 9.1% | 9.1% | 10.3% | 9.2% | 8.4% | 13.8% | 14.7% | 13.1% | 14.1% | 13.8% | 9.0% | 17.3% | 17.3% | 12.4% | 3.4% | 9.5% | (37.0%) | 12.9% | 14.8% | 6.4% | 16.6% | 20.8% | 24.6% | 20.8% | 19.6% | 18.9% | 19.1% |
| Return on invested capital | 2.3% | 4.2% | 7.0% | 4.6% | 7.1% | 7.0% | 6.0% | – | 12.1% | 10.5% | 9.2% | 11.0% | 10.4% | 9.6% | 8.2% | 8.1% | 8.8% | 8.1% | 7.1% | 10.4% | 12.9% | 10.1% | 14.0% | 13.3% | 8.3% | 15.5% | 15.0% | 13.0% | 8.2% | 12.0% | 10.4% | 12.3% | 13.9% | 8.2% | 15.2% | 19.1% | 24.8% | 26.3% | 26.6% | 26.5% | 27.6% |
| Dividend yield | 3.4% | 6.0% | 3.1% | 2.4% | 1.9% | 2.9% | 2.7% | 2.4% | 2.8% | 1.8% | 1.2% | 1.2% | 1.3% | 1.3% | 1.2% | 1.0% | 1.0% | 0.9% | 0.6% | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Financial health | |||||||||||||||||||||||||||||||||||||||||
| Current ratio | 0.84× | 0.81× | 0.86× | 0.95× | 0.89× | 0.91× | 0.94× | 1.03× | 1.02× | 1.18× | 1.26× | 1.37× | 1.64× | 1.42× | 1.56× | 1.60× | 1.43× | 1.23× | 1.31× | 1.48× | 1.83× | 1.63× | 1.86× | 1.93× | 1.76× | 1.67× | 1.59× | 1.39× | 1.34× | 1.66× | 1.42× | 1.61× | 1.81× | 1.77× | 1.78× | 1.76× | 2.19× | 2.06× | 2.62× | 2.53× | 2.44× |
| Debt / equity | 0.80× | 0.83× | 0.77× | 0.73× | 0.75× | 0.93× | 1.07× | 1.25× | 0.68× | 0.70× | 0.74× | 0.32× | 0.35× | 0.24× | 0.24× | 0.26× | 0.30× | 0.25× | 0.33× | 0.51× | 0.26× | 0.41× | 0.18× | 0.21× | 0.23× | 0.27× | 0.28× | 0.34× | 0.29× | 0.54× | 0.25× | 0.22× | 0.19× | 0.20× | 0.23× | 0.23× | 0.25× | 0.03× | 0.04× | 0.06× | 0.10× |
| Effective tax rate | 19.1% | 25.4% | 25.1% | 25.9% | 24.2% | 26.3% | 26.3% | 142.4% | 19.8% | 38.4% | 39.3% | 39.5% | 38.9% | 38.6% | 39.3% | 38.9% | 37.3% | 39.6% | 39.5% | 38.5% | 35.8% | 34.2% | 38.4% | 38.0% | 41.8% | 40.0% | 41.0% | 44.4% | 62.8% | 42.1% | 50.3% | 41.6% | 39.9% | 44.6% | 41.2% | 34.4% | 34.3% | 34.7% | 40.1% | 44.9% | 43.8% |
| Share count | |||||||||||||||||||||||||||||||||||||||||
| Diluted shares outstanding | 1,271 | 1,262 | 1,290 | 1,323 | 1,329 | 1,314 | 1,305 | 1,044 | 1,024 | 1,079 | 1,126 | 1,169 | 1,226 | 1,280 | 1,347 | 1,377 | 1,450 | 1,469 | 1,372 | 853 | 842 | 822 | 808 | 811 | 797 | 799 | 818 | 810 | 791 | 426 | 432 | 423 | 529 | 420 | 414 | 410 | 431 | 436 | 432 | 433 | 433 |
| 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 | FY1997 | FY1996 | FY1995 | FY1994 | FY1993 | FY1992 | FY1991 | FY1990 | FY1989 | FY1988 | FY1987 | FY1986 | FY1985 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | ||||||||||||||||||||||||||||||||||||||||||
| Revenue | $415,086 | $402,067 | $372,809 | $357,776 | $322,467 | $292,111 | $268,706 | $256,776 | $194,579 | $184,786 | $177,546 | $153,290 | $139,367 | $126,761 | $123,120 | $107,080 | $95,778 | $98,215 | $87,472 | $76,330 | $43,821 | $37,007 | $30,594 | $26,588 | $24,182 | $22,241 | $20,088 | $18,098 | $15,274 | $13,750 | $11,832 | $9,763 | $11,286 | $10,435 | $10,433 | $9,886 | $8,687 | $7,554 | $6,780 | $5,930 | $5,262 | $4,775 |
| Cost of revenue | – | – | – | – | – | – | – | – | – | ($156,220) | ($148,669) | ($126,762) | ($114,000) | ($102,978) | ($100,632) | ($86,518) | ($75,559) | ($77,857) | ($69,182) | ($60,222) | ($32,079) | ($27,312) | ($22,563) | ($19,725) | ($18,113) | ($16,550) | ($14,726) | ($13,237) | ($11,144) | ($10,027) | ($8,473) | ($6,859) | ($7,253) | ($6,664) | ($6,529) | ($6,164) | ($5,372) | ($4,564) | ($4,086) | ($3,568) | ($3,141) | ($2,854) |
| Gross profit | – | – | – | – | – | – | – | – | – | $28,545 | $28,857 | $26,528 | $25,367 | $23,783 | $22,488 | $20,562 | $20,219 | $20,358 | $18,290 | $16,108 | $11,742 | $9,695 | $8,031 | $6,863 | $6,069 | $5,691 | $5,362 | $4,861 | $4,129 | $3,723 | $3,358 | $2,904 | $4,033 | $3,771 | $3,904 | $3,722 | $3,314 | $2,990 | $2,695 | $2,362 | $2,121 | $1,921 |
| Operating expenses | ||||||||||||||||||||||||||||||||||||||||||
| Research and development | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | – | – | ($41,229) | – | – | – | – | – | – | – | – | – | – | – | – | ($14,231) | ($14,092) | ($13,933) | ($12,244) | ($11,314) | ($9,301) | ($7,675) | ($6,080) | ($5,098) | ($4,552) | ($4,247) | ($3,742) | ($3,448) | ($2,949) | ($2,776) | ($2,491) | ($2,180) | ($3,216) | ($2,956) | ($3,342) | ($2,914) | ($2,536) | ($2,231) | ($2,023) | ($1,767) | ($1,574) | ($1,409) |
| Total operating expenses | – | – | – | – | – | – | – | – | – | ($19,007) | ($18,471) | ($17,053) | ($16,568) | ($15,746) | ($15,278) | ($14,231) | ($14,082) | ($13,933) | ($12,244) | ($11,314) | ($9,301) | ($7,675) | ($6,576) | ($5,439) | ($4,863) | ($4,920) | ($4,039) | ($3,726) | ($3,199) | ($3,019) | ($2,754) | ($2,508) | ($3,422) | ($3,148) | ($3,543) | ($3,053) | ($2,650) | ($2,329) | ($2,105) | ($1,839) | ($1,638) | ($1,472) |
| Total costs and expenses | ($406,798) | ($397,407) | ($364,293) | ($344,033) | ($314,513) | ($278,801) | ($254,795) | ($244,789) | ($190,558) | ($175,248) | ($167,160) | ($143,815) | ($130,568) | ($118,724) | ($115,910) | ($100,749) | ($89,641) | ($91,790) | ($81,426) | ($71,536) | ($41,380) | ($34,987) | ($29,140) | ($25,164) | ($22,975) | ($21,471) | ($18,765) | ($16,963) | ($14,343) | ($13,046) | ($11,227) | ($9,367) | ($10,675) | ($9,812) | ($10,072) | ($9,217) | ($8,023) | ($6,893) | ($6,191) | ($5,407) | ($4,779) | ($4,326) |
| Operating income | $8,288 | $4,660 | $8,516 | $13,743 | $7,954 | $13,310 | $13,911 | $11,987 | $4,021 | $9,538 | $10,386 | $9,475 | $8,799 | $8,037 | $7,210 | $6,331 | $6,137 | $6,425 | $6,046 | $4,794 | $2,442 | $2,020 | $1,455 | $1,424 | $1,206 | $771 | $1,323 | $1,136 | $930 | $704 | $605 | $396 | $611 | $623 | $361 | $670 | $664 | $661 | $590 | $524 | $484 | $449 |
| Earnings | ||||||||||||||||||||||||||||||||||||||||||
| EBITDA | $12,810 | $9,266 | $13,113 | $18,109 | $12,178 | $17,796 | $18,352 | $16,358 | $6,739 | $12,017 | $12,861 | $11,567 | $10,730 | $9,907 | $8,963 | $7,899 | $7,606 | $7,814 | $7,320 | $5,889 | $3,175 | $2,609 | $1,895 | $1,765 | $1,516 | $1,091 | $1,619 | $1,413 | $1,180 | $947 | $868 | $724 | $817 | $815 | $562 | $808 | $779 | $759 | – | – | – | – |
| Interest income | $2,522 | $2,331 | $2,099 | $1,696 | $1,201 | $1,070 | $781 | $854 | $660 | $21 | $20 | $21 | $15 | $8 | $4 | $4 | $3 | $5 | $21 | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Interest expense | ($3,102) | ($3,119) | ($2,958) | ($2,658) | ($2,287) | ($2,503) | ($2,907) | ($3,035) | ($2,619) | ($1,062) | ($1,078) | ($859) | ($615) | ($517) | ($561) | ($588) | ($539) | ($530) | ($530) | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Pre-tax income | $5,787 | $2,136 | $6,148 | $11,173 | $5,836 | $10,537 | $9,770 | $8,997 | $1,406 | $8,268 | $8,637 | $8,616 | $7,678 | $7,528 | $6,305 | $5,747 | $5,601 | $5,900 | $5,537 | $4,359 | $2,226 | $1,909 | $1,396 | $1,376 | $1,156 | $710 | $1,243 | $1,076 | $691 | $238 | $643 | $116 | $526 | $552 | $282 | $590 | $587 | $606 | $542 | $476 | $432 | $391 |
| Income tax expense | ($902) | ($408) | ($1,562) | ($2,805) | ($1,509) | ($2,548) | ($2,569) | ($2,366) | ($2,002) | ($1,637) | ($3,317) | ($3,386) | ($3,033) | ($2,928) | ($2,436) | ($2,258) | ($2,179) | ($2,200) | ($2,193) | ($1,722) | ($857) | ($684) | ($478) | ($528) | ($439) | ($296) | ($497) | ($441) | ($306) | ($149) | ($271) | ($58) | ($219) | ($220) | ($126) | ($243) | ($202) | ($208) | ($188) | ($191) | ($194) | ($171) |
| Net income | $4,890 | $1,768 | $4,614 | $8,344 | $4,311 | $8,001 | $7,179 | $6,634 | ($594) | $6,622 | $5,317 | $5,237 | $4,644 | $4,592 | $3,864 | $3,462 | $3,427 | $3,696 | $3,198 | $2,637 | $1,369 | $1,225 | $919 | $847 | $717 | $413 | $746 | $635 | $384 | $89 | $208 | ($573) | $308 | $332 | $133 | $347 | $385 | $398 | $354 | $285 | $238 | $210 |
| Per share | ||||||||||||||||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $3.78 | $1.39 | $3.66 | $6.47 | $3.26 | $6.02 | $5.46 | $5.08 | ($0.57) | $6.44 | $4.90 | $4.63 | $3.96 | $3.74 | $3.02 | $2.57 | $2.49 | $2.55 | $2.18 | $1.92 | $1.60 | $1.45 | $1.10 | $1.03 | $0.88 | $0.50 | $0.92 | $0.78 | $0.48 | $0.095 | $0.26 | ($1.52) | $0.69 | $0.60 | $0.28 | $0.80 | $0.90 | $0.89 | $0.41 | $0.66 | $0.55 | $0.49 |
| Basic EPS (GAAP) | $3.83 | $1.40 | $3.67 | $6.49 | $3.29 | $6.07 | $5.48 | $5.10 | ($0.57) | $6.47 | $4.93 | $4.66 | $3.98 | $3.77 | $3.04 | $2.59 | $2.51 | $2.58 | $2.23 | $1.97 | $1.65 | $1.49 | $1.13 | $1.06 | $0.90 | $0.51 | $0.94 | $0.80 | $0.48 | $0.10 | $0.27 | ($1.52) | $0.69 | $0.60 | $0.28 | $0.80 | $0.90 | $0.89 | $0.41 | $0.66 | $0.55 | $0.49 |
| Basic shares outstanding | 1,273 | 1,267 | 1,259 | 1,285 | 1,312 | 1,319 | 1,309 | 1,301 | 1,044 | 1,020 | 1,073 | 1,118 | 1,161 | 1,217 | 1,271 | 1,338 | 1,367 | 1,434 | 1,434 | 1,328 | 821 | 811 | 801 | 786 | 785 | 781 | 782 | 783 | 774 | 751 | 426 | 432 | 423 | 525 | 420 | 414 | 410 | 431 | 436 | 432 | 433 | 433 |
| Margins | ||||||||||||||||||||||||||||||||||||||||||
| Gross margin | – | – | – | – | – | – | – | – | – | 15.4% | 16.3% | 17.3% | 18.2% | 18.8% | 18.3% | 19.2% | 21.1% | 20.7% | 20.9% | 21.1% | 26.8% | 26.2% | 26.3% | 25.8% | 25.1% | 25.6% | 26.7% | 26.9% | 27.0% | 27.1% | 28.4% | 29.7% | 35.7% | 36.1% | 37.4% | 37.7% | 38.2% | 39.6% | 39.7% | 39.8% | 40.3% | 40.2% |
| Operating margin | 2.0% | 1.2% | 2.3% | 3.8% | 2.5% | 4.6% | 5.2% | 4.7% | 2.1% | 5.2% | 5.8% | 6.2% | 6.3% | 6.3% | 5.9% | 5.9% | 6.4% | 6.5% | 6.9% | 6.3% | 5.6% | 5.5% | 4.8% | 5.4% | 5.0% | 3.5% | 6.6% | 6.3% | 6.1% | 5.1% | 5.1% | 4.1% | 5.4% | 6.0% | 3.5% | 6.8% | 7.6% | 8.7% | 8.7% | 8.8% | 9.2% | 9.4% |
| Net margin | 1.2% | 0.4% | 1.2% | 2.3% | 1.3% | 2.7% | 2.7% | 2.6% | (0.3%) | 3.6% | 3.0% | 3.4% | 3.3% | 3.6% | 3.1% | 3.2% | 3.6% | 3.8% | 3.7% | 3.5% | 3.1% | 3.3% | 3.0% | 3.2% | 3.0% | 1.9% | 3.7% | 3.5% | 2.5% | 0.6% | 1.8% | (5.9%) | 2.7% | 3.2% | 1.3% | 3.5% | 4.4% | 5.3% | 5.2% | 4.8% | 4.5% | 4.4% |