prophet-rb 0.2.5 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/README.md +31 -9
- data/lib/prophet/forecaster.rb +11 -1
- data/lib/prophet/holidays.rb +6 -10
- data/lib/prophet/stan_backend.rb +20 -1
- data/lib/prophet/version.rb +1 -1
- data/lib/prophet.rb +18 -7
- data/vendor/aarch64-linux/bin/prophet +0 -0
- data/vendor/aarch64-linux/lib/libtbb.so +1 -0
- data/vendor/aarch64-linux/lib/libtbb.so.2 +0 -0
- data/vendor/aarch64-linux/lib/libtbbmalloc.so +1 -0
- data/vendor/aarch64-linux/lib/libtbbmalloc.so.2 +0 -0
- data/vendor/aarch64-linux/lib/libtbbmalloc_proxy.so +1 -0
- data/vendor/aarch64-linux/lib/libtbbmalloc_proxy.so.2 +0 -0
- data/vendor/aarch64-linux/licenses/boost-license.txt +23 -0
- data/vendor/aarch64-linux/licenses/cli11-license.txt +25 -0
- data/vendor/aarch64-linux/licenses/cmdstan-license.txt +27 -0
- data/vendor/aarch64-linux/licenses/eigen-bsd-license.txt +26 -0
- data/vendor/aarch64-linux/licenses/eigen-mpl2-license.txt +373 -0
- data/vendor/aarch64-linux/licenses/prophet-license.txt +21 -0
- data/vendor/aarch64-linux/licenses/rapidjson-license.txt +57 -0
- data/vendor/aarch64-linux/licenses/stan-license.txt +14 -0
- data/vendor/aarch64-linux/licenses/stan-math-license.txt +14 -0
- data/vendor/aarch64-linux/licenses/sundials-license.txt +67 -0
- data/vendor/aarch64-linux/licenses/tbb-license.txt +201 -0
- data/vendor/aarch64-linux/licenses/tbb-third-party-programs.txt +230 -0
- data/vendor/arm64-darwin/bin/prophet +0 -0
- data/vendor/arm64-darwin/lib/libtbb.dylib +0 -0
- data/vendor/arm64-darwin/lib/libtbbmalloc.dylib +0 -0
- data/vendor/arm64-darwin/lib/libtbbmalloc_proxy.dylib +0 -0
- data/vendor/arm64-darwin/licenses/boost-license.txt +23 -0
- data/vendor/arm64-darwin/licenses/cli11-license.txt +25 -0
- data/vendor/arm64-darwin/licenses/cmdstan-license.txt +27 -0
- data/vendor/arm64-darwin/licenses/eigen-bsd-license.txt +26 -0
- data/vendor/arm64-darwin/licenses/eigen-mpl2-license.txt +373 -0
- data/vendor/arm64-darwin/licenses/prophet-license.txt +21 -0
- data/vendor/arm64-darwin/licenses/rapidjson-license.txt +57 -0
- data/vendor/arm64-darwin/licenses/stan-license.txt +14 -0
- data/vendor/arm64-darwin/licenses/stan-math-license.txt +14 -0
- data/vendor/arm64-darwin/licenses/sundials-license.txt +67 -0
- data/vendor/arm64-darwin/licenses/tbb-license.txt +201 -0
- data/vendor/arm64-darwin/licenses/tbb-third-party-programs.txt +230 -0
- data/vendor/x86_64-darwin/bin/prophet +0 -0
- data/vendor/x86_64-darwin/lib/libtbb.dylib +0 -0
- data/vendor/x86_64-darwin/lib/libtbbmalloc.dylib +0 -0
- data/vendor/x86_64-darwin/lib/libtbbmalloc_proxy.dylib +0 -0
- data/vendor/x86_64-darwin/licenses/boost-license.txt +23 -0
- data/vendor/x86_64-darwin/licenses/cli11-license.txt +25 -0
- data/vendor/x86_64-darwin/licenses/cmdstan-license.txt +27 -0
- data/vendor/x86_64-darwin/licenses/eigen-bsd-license.txt +26 -0
- data/vendor/x86_64-darwin/licenses/eigen-mpl2-license.txt +373 -0
- data/vendor/x86_64-darwin/licenses/prophet-license.txt +21 -0
- data/vendor/x86_64-darwin/licenses/rapidjson-license.txt +57 -0
- data/vendor/x86_64-darwin/licenses/stan-license.txt +14 -0
- data/vendor/x86_64-darwin/licenses/stan-math-license.txt +14 -0
- data/vendor/x86_64-darwin/licenses/sundials-license.txt +67 -0
- data/vendor/x86_64-darwin/licenses/tbb-license.txt +201 -0
- data/vendor/x86_64-darwin/licenses/tbb-third-party-programs.txt +230 -0
- data/vendor/x86_64-linux/bin/prophet +0 -0
- data/vendor/x86_64-linux/lib/libtbb.so +1 -0
- data/vendor/x86_64-linux/lib/libtbb.so.2 +0 -0
- data/vendor/x86_64-linux/lib/libtbbmalloc.so +1 -0
- data/vendor/x86_64-linux/lib/libtbbmalloc.so.2 +0 -0
- data/vendor/x86_64-linux/lib/libtbbmalloc_proxy.so +1 -0
- data/vendor/x86_64-linux/lib/libtbbmalloc_proxy.so.2 +0 -0
- data/vendor/x86_64-linux/licenses/boost-license.txt +23 -0
- data/vendor/x86_64-linux/licenses/cli11-license.txt +25 -0
- data/vendor/x86_64-linux/licenses/cmdstan-license.txt +27 -0
- data/vendor/x86_64-linux/licenses/eigen-bsd-license.txt +26 -0
- data/vendor/x86_64-linux/licenses/eigen-mpl2-license.txt +373 -0
- data/vendor/x86_64-linux/licenses/prophet-license.txt +21 -0
- data/vendor/x86_64-linux/licenses/rapidjson-license.txt +57 -0
- data/vendor/x86_64-linux/licenses/stan-license.txt +14 -0
- data/vendor/x86_64-linux/licenses/stan-math-license.txt +14 -0
- data/vendor/x86_64-linux/licenses/sundials-license.txt +67 -0
- data/vendor/x86_64-linux/licenses/tbb-license.txt +201 -0
- data/vendor/x86_64-linux/licenses/tbb-third-party-programs.txt +230 -0
- metadata +78 -11
- data/ext/prophet/Makefile +0 -5
- data/ext/prophet/extconf.rb +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3e24dad0631694318db703e420f657e964911071b73e03cd73a6fc4c2d6e16fc
|
|
4
|
+
data.tar.gz: bcf2a53b3bcacf5461cd0b881bba0d026c7adee88200646f915074c9946711d3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bdad3069aeaadaa9ac8d339fb6e877942470fd5c8e11652bce50029b0a6de13d0fe383f6a97a343e29138396dec4b1c159e5ee87d229073d2f3eb5c084aa5af2
|
|
7
|
+
data.tar.gz: 1d54e502621ed4d34c818fe2e0e064578eae948957305300222892f4ee4750418e2471261596568d05795aea31bb4fe4639925da20a1f5db5bd20a0f0b35a66f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## 0.3.2 (2022-05-15)
|
|
2
|
+
|
|
3
|
+
- Added advanced API options to `forecast` and `anomalies` methods
|
|
4
|
+
|
|
5
|
+
## 0.3.1 (2022-04-28)
|
|
6
|
+
|
|
7
|
+
- Improved error message for missing columns
|
|
8
|
+
|
|
9
|
+
## 0.3.0 (2022-04-24)
|
|
10
|
+
|
|
11
|
+
- Switched to precompiled models
|
|
12
|
+
- Dropped support for Ruby < 2.7
|
|
13
|
+
|
|
1
14
|
## 0.2.5 (2021-07-28)
|
|
2
15
|
|
|
3
16
|
- Added `anomalies` method
|
data/README.md
CHANGED
|
@@ -10,18 +10,20 @@ Supports:
|
|
|
10
10
|
|
|
11
11
|
And gracefully handles missing data
|
|
12
12
|
|
|
13
|
-
[](https://github.com/ankane/prophet/actions)
|
|
13
|
+
[](https://github.com/ankane/prophet-ruby/actions)
|
|
14
14
|
|
|
15
15
|
## Installation
|
|
16
16
|
|
|
17
17
|
Add this line to your application’s Gemfile:
|
|
18
18
|
|
|
19
19
|
```ruby
|
|
20
|
-
gem
|
|
20
|
+
gem "prophet-rb"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Simple API
|
|
24
24
|
|
|
25
|
+
### Forecasting
|
|
26
|
+
|
|
25
27
|
Get future predictions for a time series
|
|
26
28
|
|
|
27
29
|
```ruby
|
|
@@ -48,12 +50,32 @@ series = User.group_by_day(:created_at).count
|
|
|
48
50
|
Prophet.forecast(series)
|
|
49
51
|
```
|
|
50
52
|
|
|
53
|
+
And supports [advanced API](#advanced-api) options
|
|
54
|
+
|
|
55
|
+
```ruby
|
|
56
|
+
Prophet.forecast(series, growth: "logistic", weekly_seasonality: false)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Anomaly Detection
|
|
60
|
+
|
|
51
61
|
Detect anomalies in a time series
|
|
52
62
|
|
|
53
63
|
```ruby
|
|
54
64
|
Prophet.anomalies(series)
|
|
55
65
|
```
|
|
56
66
|
|
|
67
|
+
Specify the width of uncertainty intervals (decrease for more anomalies)
|
|
68
|
+
|
|
69
|
+
```ruby
|
|
70
|
+
Prophet.anomalies(series, interval_width: 0.99)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Also supports [advanced API](#advanced-api) options
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
Prophet.anomalies(series, growth: "logistic", weekly_seasonality: false)
|
|
77
|
+
```
|
|
78
|
+
|
|
57
79
|
## Advanced API
|
|
58
80
|
|
|
59
81
|
Check out the [Prophet documentation](https://facebook.github.io/prophet/docs/quick_start.html) for a great explanation of all of the features. The advanced API follows the Python API and supports the same features. It uses [Rover](https://github.com/ankane/rover) for data frames.
|
|
@@ -206,7 +228,7 @@ Add country-specific holidays
|
|
|
206
228
|
|
|
207
229
|
```ruby
|
|
208
230
|
m = Prophet.new
|
|
209
|
-
m.add_country_holidays(
|
|
231
|
+
m.add_country_holidays("US")
|
|
210
232
|
m.fit(df)
|
|
211
233
|
```
|
|
212
234
|
|
|
@@ -295,23 +317,23 @@ This library was ported from the [Prophet Python library](https://github.com/fac
|
|
|
295
317
|
|
|
296
318
|
## History
|
|
297
319
|
|
|
298
|
-
View the [changelog](https://github.com/ankane/prophet/blob/master/CHANGELOG.md)
|
|
320
|
+
View the [changelog](https://github.com/ankane/prophet-ruby/blob/master/CHANGELOG.md)
|
|
299
321
|
|
|
300
322
|
## Contributing
|
|
301
323
|
|
|
302
324
|
Everyone is encouraged to help improve this project. Here are a few ways you can help:
|
|
303
325
|
|
|
304
|
-
- [Report bugs](https://github.com/ankane/prophet/issues)
|
|
305
|
-
- Fix bugs and [submit pull requests](https://github.com/ankane/prophet/pulls)
|
|
326
|
+
- [Report bugs](https://github.com/ankane/prophet-ruby/issues)
|
|
327
|
+
- Fix bugs and [submit pull requests](https://github.com/ankane/prophet-ruby/pulls)
|
|
306
328
|
- Write, clarify, or fix documentation
|
|
307
329
|
- Suggest or add new features
|
|
308
330
|
|
|
309
331
|
To get started with development:
|
|
310
332
|
|
|
311
333
|
```sh
|
|
312
|
-
git clone https://github.com/ankane/prophet.git
|
|
313
|
-
cd prophet
|
|
334
|
+
git clone https://github.com/ankane/prophet-ruby.git
|
|
335
|
+
cd prophet-ruby
|
|
314
336
|
bundle install
|
|
315
|
-
bundle exec
|
|
337
|
+
bundle exec rake vendor:all
|
|
316
338
|
bundle exec rake test
|
|
317
339
|
```
|
data/lib/prophet/forecaster.rb
CHANGED
|
@@ -143,7 +143,7 @@ module Prophet
|
|
|
143
143
|
def setup_dataframe(df, initialize_scales: false)
|
|
144
144
|
if df.include?("y")
|
|
145
145
|
df["y"] = df["y"].map(&:to_f)
|
|
146
|
-
raise ArgumentError "Found infinity in column y." unless df["y"].all?(&:finite?)
|
|
146
|
+
raise ArgumentError, "Found infinity in column y." unless df["y"].all?(&:finite?)
|
|
147
147
|
end
|
|
148
148
|
# TODO support integers
|
|
149
149
|
|
|
@@ -386,6 +386,12 @@ module Prophet
|
|
|
386
386
|
|
|
387
387
|
def add_country_holidays(country_name)
|
|
388
388
|
raise Error, "Country holidays must be added prior to model fitting." if @history
|
|
389
|
+
|
|
390
|
+
# Fix for previously documented keyword argument
|
|
391
|
+
if country_name.is_a?(Hash) && country_name[:country_name]
|
|
392
|
+
country_name = country_name[:country_name]
|
|
393
|
+
end
|
|
394
|
+
|
|
389
395
|
# Validate names.
|
|
390
396
|
get_holiday_names(country_name).each do |name|
|
|
391
397
|
# Allow merging with existing holidays
|
|
@@ -616,6 +622,10 @@ module Prophet
|
|
|
616
622
|
end
|
|
617
623
|
raise ArgumentError, "Must be a data frame" unless df.is_a?(Rover::DataFrame)
|
|
618
624
|
|
|
625
|
+
unless df.include?("ds") && df.include?("y")
|
|
626
|
+
raise ArgumentError, "Data frame must have ds and y columns"
|
|
627
|
+
end
|
|
628
|
+
|
|
619
629
|
history = df[!df["y"].missing]
|
|
620
630
|
raise Error, "Data has less than 2 non-nil rows" if history.size < 2
|
|
621
631
|
|
data/lib/prophet/holidays.rb
CHANGED
|
@@ -2,25 +2,21 @@ module Prophet
|
|
|
2
2
|
module Holidays
|
|
3
3
|
def get_holiday_names(country)
|
|
4
4
|
years = (1995..2045).to_a
|
|
5
|
-
make_holidays_df(years, country)["holiday"].uniq
|
|
5
|
+
holiday_names = make_holidays_df(years, country)["holiday"].uniq
|
|
6
|
+
# TODO raise error in 0.4.0
|
|
7
|
+
logger.warn "Holidays in #{country} are not currently supported"
|
|
8
|
+
holiday_names
|
|
6
9
|
end
|
|
7
10
|
|
|
8
11
|
def make_holidays_df(year_list, country)
|
|
9
12
|
holidays_df[(holidays_df["country"] == country) & (holidays_df["year"].in?(year_list))][["ds", "holiday"]]
|
|
10
13
|
end
|
|
11
14
|
|
|
12
|
-
# TODO
|
|
15
|
+
# TODO improve performance
|
|
13
16
|
def holidays_df
|
|
14
17
|
@holidays_df ||= begin
|
|
15
|
-
holidays = {"ds" => [], "holiday" => [], "country" => [], "year" => []}
|
|
16
18
|
holidays_file = File.expand_path("../../data-raw/generated_holidays.csv", __dir__)
|
|
17
|
-
|
|
18
|
-
holidays["ds"] << row["ds"]
|
|
19
|
-
holidays["holiday"] << row["holiday"]
|
|
20
|
-
holidays["country"] << row["country"]
|
|
21
|
-
holidays["year"] << row["year"]
|
|
22
|
-
end
|
|
23
|
-
Rover::DataFrame.new(holidays)
|
|
19
|
+
Rover.read_csv(holidays_file, converters: [:date, :numeric])
|
|
24
20
|
end
|
|
25
21
|
end
|
|
26
22
|
end
|
data/lib/prophet/stan_backend.rb
CHANGED
|
@@ -6,7 +6,8 @@ module Prophet
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def load_model
|
|
9
|
-
model_file = File.expand_path("../../
|
|
9
|
+
model_file = File.expand_path("../../vendor/#{platform}/bin/prophet", __dir__)
|
|
10
|
+
raise Error, "Platform not supported yet" unless File.exist?(model_file)
|
|
10
11
|
CmdStan::Model.new(exe_file: model_file)
|
|
11
12
|
end
|
|
12
13
|
|
|
@@ -132,5 +133,23 @@ module Prophet
|
|
|
132
133
|
stan_init["beta"] = stan_init["beta"].to_a
|
|
133
134
|
[stan_init, stan_data]
|
|
134
135
|
end
|
|
136
|
+
|
|
137
|
+
def platform
|
|
138
|
+
if Gem.win_platform?
|
|
139
|
+
"windows"
|
|
140
|
+
elsif RbConfig::CONFIG["host_os"] =~ /darwin/i
|
|
141
|
+
if RbConfig::CONFIG["host_cpu"] =~ /arm|aarch64/i
|
|
142
|
+
"arm64-darwin"
|
|
143
|
+
else
|
|
144
|
+
"x86_64-darwin"
|
|
145
|
+
end
|
|
146
|
+
else
|
|
147
|
+
if RbConfig::CONFIG["host_cpu"] =~ /arm|aarch64/i
|
|
148
|
+
"aarch64-linux"
|
|
149
|
+
else
|
|
150
|
+
"x86_64-linux"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
135
154
|
end
|
|
136
155
|
end
|
data/lib/prophet/version.rb
CHANGED
data/lib/prophet.rb
CHANGED
|
@@ -21,9 +21,12 @@ module Prophet
|
|
|
21
21
|
Forecaster.new(**kwargs)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
def self.forecast(series, count: 10)
|
|
24
|
+
def self.forecast(series, count: 10, country_holidays: nil, cap: nil, verbose: false, **options)
|
|
25
25
|
raise ArgumentError, "Series must have at least 10 data points" if series.size < 10
|
|
26
26
|
|
|
27
|
+
# error early on unknown keywords
|
|
28
|
+
m = Prophet.new(**options)
|
|
29
|
+
|
|
27
30
|
# check type to determine output format
|
|
28
31
|
# check for before converting to time
|
|
29
32
|
keys = series.keys
|
|
@@ -62,12 +65,14 @@ module Prophet
|
|
|
62
65
|
|
|
63
66
|
# use series, not times, so dates are handled correctly
|
|
64
67
|
df = Rover::DataFrame.new({"ds" => series.keys, "y" => series.values})
|
|
68
|
+
df["cap"] = cap if cap
|
|
65
69
|
|
|
66
|
-
m =
|
|
67
|
-
m.
|
|
70
|
+
m.logger.level = ::Logger::FATAL unless verbose
|
|
71
|
+
m.add_country_holidays(country_holidays) if country_holidays
|
|
68
72
|
m.fit(df)
|
|
69
73
|
|
|
70
74
|
future = m.make_future_dataframe(periods: count, include_history: false, freq: freq)
|
|
75
|
+
future["cap"] = cap if cap
|
|
71
76
|
forecast = m.predict(future)
|
|
72
77
|
result = forecast[["ds", "yhat"]].to_a
|
|
73
78
|
|
|
@@ -84,11 +89,17 @@ module Prophet
|
|
|
84
89
|
result.map { |v| [v["ds"], v["yhat"]] }.to_h
|
|
85
90
|
end
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
# TODO better name for interval_width
|
|
93
|
+
# TODO DRY with forecast method
|
|
94
|
+
def self.anomalies(series, interval_width: 0.99, country_holidays: nil, cap: nil, verbose: false, **options)
|
|
95
|
+
df = Rover::DataFrame.new({"ds" => series.keys, "y" => series.values})
|
|
96
|
+
df["cap"] = cap if cap
|
|
97
|
+
|
|
98
|
+
m = Prophet.new(interval_width: interval_width, **options)
|
|
99
|
+
m.logger.level = ::Logger::FATAL unless verbose
|
|
100
|
+
m.add_country_holidays(country_holidays) if country_holidays
|
|
91
101
|
m.fit(df)
|
|
102
|
+
|
|
92
103
|
forecast = m.predict(df)
|
|
93
104
|
# filter df["ds"] to ensure dates/times in same format as input
|
|
94
105
|
df["ds"][(df["y"] < forecast["yhat_lower"]) | (df["y"] > forecast["yhat_upper"])].to_a
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
INPUT (libtbb.so.2)
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
INPUT (libtbbmalloc.so.2)
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
INPUT (libtbbmalloc_proxy.so.2)
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Boost Software License - Version 1.0 - August 17th, 2003
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person or organization
|
|
4
|
+
obtaining a copy of the software and accompanying documentation covered by
|
|
5
|
+
this license (the "Software") to use, reproduce, display, distribute,
|
|
6
|
+
execute, and transmit the Software, and to prepare derivative works of the
|
|
7
|
+
Software, and to permit third-parties to whom the Software is furnished to
|
|
8
|
+
do so, all subject to the following:
|
|
9
|
+
|
|
10
|
+
The copyright notices in the Software and this entire statement, including
|
|
11
|
+
the above license grant, this restriction and the following disclaimer,
|
|
12
|
+
must be included in all copies of the Software, in whole or in part, and
|
|
13
|
+
all derivative works of the Software, unless such copies or derivative
|
|
14
|
+
works are solely in the form of machine-executable object code generated by
|
|
15
|
+
a source language processor.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
|
20
|
+
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
|
21
|
+
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
|
22
|
+
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
23
|
+
DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
CLI11 1.8 Copyright (c) 2017-2019 University of Cincinnati, developed by Henry
|
|
2
|
+
Schreiner under NSF AWARD 1414736. All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms of CLI11, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
8
|
+
list of conditions and the following disclaimer.
|
|
9
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
10
|
+
this list of conditions and the following disclaimer in the documentation
|
|
11
|
+
and/or other materials provided with the distribution.
|
|
12
|
+
3. Neither the name of the copyright holder nor the names of its contributors
|
|
13
|
+
may be used to endorse or promote products derived from this software without
|
|
14
|
+
specific prior written permission.
|
|
15
|
+
|
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
17
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
18
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
19
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
20
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
21
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
22
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
23
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
24
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
25
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Copyright (c) 2014, Stan
|
|
2
|
+
All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
5
|
+
are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
8
|
+
list of conditions and the following disclaimer.
|
|
9
|
+
|
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
11
|
+
list of conditions and the following disclaimer in the documentation and/or
|
|
12
|
+
other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
* Neither the name of the {organization} nor the names of its
|
|
15
|
+
contributors may be used to endorse or promote products derived from
|
|
16
|
+
this software without specific prior written permission.
|
|
17
|
+
|
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
19
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
22
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
24
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
25
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
27
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (c) 2011, Intel Corporation. All rights reserved.
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
5
|
+
are permitted provided that the following conditions are met:
|
|
6
|
+
|
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
8
|
+
list of conditions and the following disclaimer.
|
|
9
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
10
|
+
this list of conditions and the following disclaimer in the documentation
|
|
11
|
+
and/or other materials provided with the distribution.
|
|
12
|
+
* Neither the name of Intel Corporation nor the names of its contributors may
|
|
13
|
+
be used to endorse or promote products derived from this software without
|
|
14
|
+
specific prior written permission.
|
|
15
|
+
|
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
17
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
18
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
19
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
|
20
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
21
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
22
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
23
|
+
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
24
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
25
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
*/
|