XML 94 R35.htm IDEA: XBRL DOCUMENT v3.19.3.a.u2
Note 13 - Stock-based Compensation (Tables)
12 Months Ended
Dec. 31, 2019
Notes Tables  
Share-based Payment Arrangement, Cost by Plan [Table Text Block]
   

Year Ended December 31,

 

(in thousands)

 

2019

   

2018

   

2017

 
                         

Stock options and other

  $ 9,591     $ 10,113     $ 7,954  

Employee stock purchase plan

    1,190       815       604  

Total stock-based compensation expense

  $ 10,781     $ 10,928     $ 8,558  
                         

Cost of revenue

  $ 2,056     $ 1,543     $ 970  

Operating expenses:

                       

Marketing and sales

    2,632       1,942       1,429  

Research and development

    1,851       1,517       1,091  

General and administrative

    4,242       5,926       5,068  

Total stock-based compensation expense

  $ 10,781     $ 10,928     $ 8,558  
Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]
   

Year Ended December 31,

 
   

2019

   

2018

   

2017

 
                         

Risk-free interest rate

    2.35 - 2.58%       2.52 - 3.07%       2.24 - 2.36%  

Expected life (years)

    6.25       6.25       6.5  

Expected volatility

    42.52 - 42.74%       41.68 - 42.22%       42.68 - 44.68%  

Expected dividend yield

    0%       0%       0%  

Weighted average grant date fair value

    $47.84       $50.08       $32.26  
Share-based Payment Arrangement, Option, Activity [Table Text Block]
           

Weighted-

 
           

Average

 
   

Stock Options

   

Exercise Price

 
                 

Options outstanding at January 1, 2017

    569,639     $ 45.00  

Granted

    60,100       69.06  

Exercised

    (187,313 )     35.93  

Cancelled

    (43,371 )     61.02  

Options outstanding at December 31, 2017

    399,055       51.13  

Granted

    36,600       110.59  

Exercised

    (155,765 )     38.92  

Cancelled

    (27,274 )     74.35  

Options outstanding at December 31, 2018

    252,616       64.71  

Granted

    53,708       105.81  

Exercised

    (16,079 )     48.67  

Cancelled

    (13,979 )     89.50  

Options outstanding at December 31, 2019

    276,266     $ 72.38  
                 

Exercisable at December 31, 2019

    152,423     $ 59.26  
Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]
   

Options Outstanding, Vested and Expected to Vest

   

Options Exercisable

 
Range of Exercise Prices   Number Outstanding     Weighted Average Remaining Contractual Life     Weighted Average Exercise Price ($)     Number Exercisable     Weighted Average Exercise Price ($)  
                                   

7.76 to 31.43

23,883     1.98       25.04     23,883       25.04  

31.44 to 66.87

125,022     4.42       58.67     85,656       58.81  

66.88 to 96.20

45,255     4.49       70.98     33,445       70.41  

96.21 to 123.10

82,106     8.68       107.79     9,439       110.36  
Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]
           

Weighted-

 
           

Average

 
           

Grant Date

 
   

Restricted

   

Fair Value

 
   

Stock Awards

   

Per Share

 
                 

Restricted stock at January 1, 2017

    215,105     $ 62.78  

Granted

    210,744       63.70  

Restrictions lapsed

    (60,102 )     63.60  

Forfeited

    (30,916 )     61.99  

Restricted stock at December 31, 2017

    334,831       63.29  

Granted

    106,855       115.41  

Restrictions lapsed

    (86,191 )     63.64  

Forfeited

    (31,574 )     68.67  

Restricted stock at December 31, 2018

    323,921       79.85  

Granted

    115,471       106.35  

Restrictions lapsed

    (92,597 )     77.25  

Forfeited

    (31,822 )     87.58  

Restricted stock at December 31, 2019

    314,973     $ 89.55  
Schedule of Nonvested Performance-based Units Activity [Table Text Block]
           

Weighted-

 
           

Average

 
           

Grant Date

 
   

Performance

   

Fair Value

 
   

Stock Awards

   

Per Share

 
                 

Performance stock at January 1, 2017

    -     $ -  

Granted

    25,707       58.35  

Restrictions lapsed

    -       -  

Forfeited

    -       -  

Performance stock at December 31, 2017

    25,707       58.35  

Granted

    20,006       105.75  

Restrictions lapsed

    -       -  

Performance change

    6,427       58.35  

Forfeited

    -       -  

Performance stock at December 31, 2018

    52,140       76.54  

Granted

    21,434       104.99  

Restrictions lapsed

    -       -  

Performance change

    (61,816 )     88.06  

Forfeited

    (2,375 )     105.37  

Performance stock at December 31, 2019

    9,383     $ 58.35  
Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]
   

Year Ended December 31,

 
   

2019

   

2018

   

2017

 
                   

Risk-free interest rate

  1.59 - 2.35%     2.06 - 2.33%     0.97 - 1.48%  

Expected life (months)

  6.00     6.00     6.00  

Expected volatility

  42.63 - 53.57%     31.50 - 37.36%     24.49 - 34.51%  

Expected dividend yield

  0%     0%     0%