
| 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 | $84,151 | $107,610 | $133,948 | $150,357 | $186,292 | $146,364 | $101,742 | $84,767 | $103,558 | $99,638 | $83,638 | $101,832 | $98,775 | $70,781 | $71,799 | $72,145 | $57,255 | $56,043 | $74,751 | $81,353 | $83,572 | $96,555 | $84,065 | $70,676 | $61,383 | $67,863 | $77,123 | $74,600 |
| Enterprise value | $106,882 | $126,969 | $154,613 | $166,300 | $201,243 | $167,814 | $124,184 | $102,484 | $124,308 | $111,617 | $93,742 | $109,850 | $104,889 | $76,247 | $78,725 | $79,314 | $64,742 | $64,865 | $83,165 | $83,486 | $84,511 | $95,806 | $85,823 | $72,264 | $64,933 | $70,588 | $75,343 | $75,572 |
| P/E (TTM) at period end | 15.10× | 18.61× | 19.97× | 13.02× | 14.45× | 108.98× | 22.91× | 17.69× | 21.11× | 29.12× | 17.27× | 33.59× | 22.59× | 87.71× | 18.87× | 21.61× | 29.09× | 18.66× | 195.68× | 19.36× | 21.59× | 28.97× | 29.01× | 22.21× | 25.59× | 23.13× | 87.34× | 42.85× |
| P/S (TTM) at period end | 0.95× | 1.18× | 1.47× | 1.50× | 1.91× | 1.73× | 1.37× | 1.18× | 1.57× | 1.64× | 1.43× | 1.75× | 1.78× | 1.31× | 1.35× | 1.46× | 1.26× | 1.09× | 1.50× | 1.71× | 1.96× | 2.64× | 2.51× | 2.26× | 2.00× | 2.28× | 2.85× | 3.01× |
| P/B at period end | 5.19× | 6.44× | 7.74× | 7.60× | 13.07× | 222.78× | 31.14× | 28.06× | 104.18× | 246.02× | 33.86× | 47.56× | 15.26× | 15.21× | 10.21× | 9.04× | 7.50× | 8.27× | 6.14× | 5.25× | 4.95× | 5.89× | 5.66× | 5.67× | 5.99× | 6.97× | 6.18× | 10.40× |
| EV / EBITDA (TTM) | 9.20× | 10.51× | 12.36× | 10.21× | 12.77× | 16.16× | 12.23× | 11.10× | 12.67× | 11.26× | 9.61× | 15.94× | 11.78× | 23.82× | 10.01× | 10.67× | 12.32× | 9.01× | 35.80× | 9.94× | 10.79× | 14.33× | 14.32× | 13.00× | 12.12× | 12.42× | 14.70× | 38.21× |
| EV / Sales (TTM) | 1.21× | 1.39× | 1.70× | 1.66× | 2.07× | 1.98× | 1.68× | 1.43× | 1.89× | 1.83× | 1.61× | 1.89× | 1.89× | 1.41× | 1.48× | 1.60× | 1.43× | 1.26× | 1.67× | 1.76× | 1.98× | 2.62× | 2.56× | 2.31× | 2.12× | 2.37× | 2.79× | 3.05× |
| Returns | ||||||||||||||||||||||||||||
| Return on equity | 34.3% | 34.6% | 38.8% | 58.4% | 90.4% | 204.4% | 135.9% | 158.6% | 493.5% | 844.9% | 196.1% | 141.6% | 67.5% | 17.3% | 54.1% | 41.8% | 25.8% | 44.3% | 3.1% | 27.1% | 22.9% | 20.3% | 19.5% | 25.5% | 23.4% | 30.1% | 7.1% | 24.3% |
| Return on invested capital | 15.7% | 18.1% | 17.5% | 27.0% | 33.7% | 24.9% | 23.4% | 25.9% | 23.0% | 38.1% | 34.7% | 29.1% | 35.0% | 10.4% | 26.3% | 22.4% | 14.3% | 20.0% | 2.4% | 22.8% | 20.2% | 17.3% | 16.7% | 17.9% | 16.8% | 22.0% | 15.8% | 21.7% |
| Dividend yield | 6.4% | 5.0% | 4.0% | 3.4% | 1.8% | 2.3% | 3.1% | 3.6% | 2.7% | 2.7% | 3.0% | 2.3% | 2.3% | 3.0% | 2.8% | 2.5% | 3.1% | 4.0% | 2.3% | 1.9% | 1.7% | 1.3% | 0.1% | 1.2% | 1.4% | 1.2% | 0.9% | 0.6% |
| Financial health | ||||||||||||||||||||||||||||
| Current ratio | 1.22× | 1.17× | 1.10× | 1.22× | 1.42× | 1.19× | 1.11× | 1.15× | 1.22× | 1.18× | 1.23× | 1.30× | 1.88× | 1.86× | 1.89× | 1.96× | 1.49× | 1.13× | 1.20× | 1.40× | 1.58× | 1.94× | 1.80× | 1.57× | 1.64× | 1.58× | 2.43× | 1.46× |
| Debt / equity | 1.49× | 1.27× | 1.29× | 0.99× | 1.54× | 37.53× | 7.73× | 7.53× | 24.44× | 39.69× | 5.80× | 5.03× | 1.68× | 2.77× | 1.58× | 1.36× | 1.25× | 1.46× | 0.90× | 0.27× | 0.24× | 0.27× | 0.26× | 0.37× | 0.50× | 0.37× | 0.19× | 0.36× |
| Effective tax rate | 22.2% | 22.3% | 21.8% | 22.1% | 22.3% | 27.2% | 21.4% | 20.4% | 31.3% | 33.2% | 34.0% | 34.6% | 34.5% | 17.1% | 34.1% | 36.9% | 36.0% | 40.1% | 11.4% | 35.5% | 36.3% | 32.3% | 33.7% | 35.0% | 38.4% | 39.3% | 57.7% | 40.0% |
| Share count | ||||||||||||||||||||||||||||
| Diluted shares outstanding | 850 | 856 | 860 | 875 | 878 | 871 | 869 | 870 | 875 | 887 | 906 | 924 | 948 | 969 | 991 | 1,003 | 1,004 | 1,022 | 1,063 | 1,089 | 1,115 | 1,138 | 1,136 | 1,132 | 1,142 | 1,174 | 1,147 | 1,109 |
| 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 | $89,930 | $88,661 | $91,070 | $90,958 | $100,338 | $97,287 | $84,628 | $74,094 | $71,861 | $65,872 | $60,906 | $58,363 | $58,232 | $55,438 | $54,127 | $53,105 | $49,545 | $45,297 | $51,486 | $49,692 | $47,547 | $42,581 | $36,582 | $33,485 | $31,272 | $30,646 | $29,771 | $27,052 | $24,788 |
| Cost of revenue | ($74,971) | ($72,631) | ($73,836) | ($73,039) | ($79,954) | ($79,772) | ($62,649) | ($57,824) | ($57,745) | ($53,201) | ($48,165) | ($45,939) | ($46,547) | ($44,079) | ($43,703) | ($42,046) | ($39,700) | ($37,191) | ($40,754) | ($44,367) | ($36,413) | ($32,265) | ($27,598) | ($8,154) | ($7,768) | ($7,891) | ($7,540) | ($6,640) | ($6,240) |
| Gross profit | $14,959 | $16,030 | $17,058 | $17,706 | $20,080 | $17,432 | $21,783 | $16,093 | $14,166 | $13,349 | $12,337 | $12,111 | $11,709 | $11,412 | $10,361 | $11,160 | $9,749 | $7,928 | $10,732 | $5,325 | $11,134 | $10,316 | $8,984 | $25,331 | $23,504 | $22,755 | $22,231 | $20,412 | $18,548 |
| Operating expenses | |||||||||||||||||||||||||||||
| Research and development | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | ($49,351) | ($48,605) | ($48,093) | ($47,092) | ($47,724) | ($68,488) | ($46,894) | ($40,746) | ($37,235) | ($34,577) | ($32,534) | ($31,028) | ($32,045) | ($28,557) | ($33,102) | ($27,575) | ($26,557) | ($4,066) | ($4,779) | ($4,452) | ($4,485) | ($4,125) | ($3,841) | ($19,328) | ($17,944) | ($17,397) | ($16,546) | ($15,285) | ($14,346) |
| Total operating expenses | ($8,383) | ($8,163) | ($8,590) | ($8,565) | ($6,986) | ($4,622) | ($14,099) | ($8,295) | ($7,142) | ($5,820) | ($4,649) | ($4,443) | ($6,741) | ($4,378) | ($9,018) | ($5,080) | ($4,108) | ($4,420) | ($5,350) | ($4,747) | ($4,485) | ($4,125) | ($3,841) | ($20,886) | ($19,408) | ($18,793) | ($17,719) | ($16,424) | ($15,458) |
| Total costs and expenses | ($83,354) | ($80,794) | ($82,602) | ($81,817) | ($87,244) | ($84,477) | ($76,944) | ($66,296) | ($64,837) | ($58,343) | ($53,218) | ($50,695) | ($53,264) | ($48,404) | ($52,784) | ($47,025) | ($43,904) | ($41,789) | ($46,104) | ($49,114) | ($40,898) | ($36,390) | ($31,439) | ($29,040) | ($27,176) | ($26,684) | ($25,259) | ($23,064) | ($21,698) |
| Operating income | $6,576 | $7,867 | $8,468 | $9,141 | $13,094 | $12,810 | $7,684 | $7,798 | $7,024 | $7,529 | $7,688 | $7,668 | $4,968 | $7,034 | $1,343 | $6,080 | $5,641 | $3,508 | $5,382 | $578 | $6,649 | $6,191 | $5,143 | $4,445 | $4,096 | $3,962 | $4,512 | $3,988 | $3,090 |
| Earnings | |||||||||||||||||||||||||||||
| EBITDA | $10,439 | $11,613 | $12,077 | $12,507 | $16,282 | $15,763 | $10,382 | $10,158 | $9,231 | $9,811 | $9,912 | $9,752 | $6,891 | $8,901 | $3,201 | $7,862 | $7,433 | $5,255 | $7,196 | $2,323 | $8,397 | $7,835 | $6,686 | $5,994 | $5,560 | $5,358 | $5,685 | $5,127 | $1,978 |
| Interest income | $383 | $314 | ($160) | $219 | $2,435 | $4,479 | ($5,139) | ($1,493) | ($400) | $61 | ($2,186) | $15 | $22 | $20 | $24 | $44 | $3 | $87 | $127 | $99 | $86 | $104 | $82 | – | – | – | – | – | – |
| Interest expense | ($1,095) | ($1,017) | ($866) | ($785) | ($704) | ($694) | ($701) | ($653) | ($605) | ($453) | ($381) | ($341) | ($353) | ($380) | ($393) | ($348) | ($354) | ($445) | ($442) | ($246) | ($211) | ($172) | ($149) | – | – | – | – | – | – |
| Pre-tax income | $5,864 | $7,164 | $7,442 | $8,573 | $14,825 | $16,595 | $1,844 | $5,652 | $6,019 | $7,137 | $5,121 | $7,342 | $4,637 | $6,674 | $974 | $5,776 | $5,290 | $3,073 | $5,015 | $431 | $6,510 | $6,075 | $4,922 | $4,370 | $5,009 | $3,937 | $4,834 | $2,088 | $2,902 |
| Income tax expense | ($1,294) | ($1,592) | ($1,660) | ($1,865) | ($3,277) | ($3,705) | ($501) | ($1,212) | ($1,228) | ($2,232) | ($1,699) | ($2,498) | ($1,605) | ($2,302) | ($167) | ($1,972) | ($1,952) | ($1,105) | ($2,012) | ($49) | ($2,308) | ($2,205) | ($1,589) | ($1,472) | ($1,755) | ($1,512) | ($1,900) | ($1,205) | ($1,161) |
| Net income | $4,570 | $5,572 | $5,782 | $6,708 | $11,548 | $12,890 | $1,343 | $4,440 | $4,791 | $4,905 | $3,422 | $4,844 | $3,032 | $4,372 | $807 | $3,804 | $3,338 | $1,968 | $3,003 | $382 | $4,202 | $3,870 | $3,333 | $2,898 | $3,182 | $2,399 | $2,934 | $883 | $1,741 |
| Per share | |||||||||||||||||||||||||||||
| Diluted EPS (GAAP) | $5.38 | $6.56 | $6.75 | $7.80 | $13.20 | $14.68 | $1.54 | $5.11 | $5.51 | $5.61 | $3.86 | $5.35 | $3.28 | $4.61 | $0.83 | $3.84 | $3.33 | $1.96 | $2.94 | $0.36 | $3.86 | $3.47 | $2.93 | $2.55 | $2.81 | $2.10 | $2.50 | $0.77 | $1.57 |
| Basic EPS (GAAP) | $5.39 | $6.56 | $6.76 | $7.81 | $13.26 | $14.75 | $1.55 | $5.14 | $5.53 | $5.63 | $3.88 | $5.38 | $3.31 | $4.65 | $0.84 | $3.88 | $3.36 | $1.97 | $2.96 | $0.36 | $3.87 | $3.48 | $2.95 | $2.57 | $2.84 | $2.13 | $2.54 | $0.79 | $1.59 |
| Basic shares outstanding | 850 | 849 | 855 | 859 | 871 | 874 | 867 | 864 | 866 | 871 | 883 | 901 | 916 | 940 | 960 | 981 | 994 | 998 | 1,016 | 1,057 | 1,085 | 1,112 | 1,130 | 1,128 | 1,120 | 1,126 | 1,155 | 1,118 | 1,095 |
| Margins | |||||||||||||||||||||||||||||
| Gross margin | 16.6% | 18.1% | 18.7% | 19.5% | 20.0% | 17.9% | 25.7% | 21.7% | 19.7% | 20.3% | 20.3% | 20.8% | 20.1% | 20.6% | 19.1% | 21.0% | 19.7% | 17.5% | 20.8% | 10.7% | 23.4% | 24.2% | 24.6% | 75.6% | 75.2% | 74.3% | 74.7% | 75.5% | 74.8% |
| Operating margin | 7.3% | 8.9% | 9.3% | 10.0% | 13.0% | 13.2% | 9.1% | 10.5% | 9.8% | 11.4% | 12.6% | 13.1% | 8.5% | 12.7% | 2.5% | 11.4% | 11.4% | 7.7% | 10.5% | 1.2% | 14.0% | 14.5% | 14.1% | 13.3% | 13.1% | 12.9% | 15.2% | 14.7% | 12.5% |
| Net margin | 5.1% | 6.3% | 6.3% | 7.4% | 11.5% | 13.2% | 1.6% | 6.0% | 6.7% | 7.4% | 5.6% | 8.3% | 5.2% | 7.9% | 1.5% | 7.2% | 6.7% | 4.3% | 5.8% | 0.8% | 8.8% | 9.1% | 9.1% | 8.7% | 10.2% | 7.8% | 9.9% | 3.3% | 7.0% |