prophet-rb 0.2.5 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![Build Status](https://github.com/ankane/prophet/workflows/build/badge.svg?branch=master)](https://github.com/ankane/prophet/actions)
|
13
|
+
[![Build Status](https://github.com/ankane/prophet-ruby/workflows/build/badge.svg?branch=master)](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
|
+
*/
|