// Path: reactivefb/src/main/java/com/beltaief/reactivefb/util/Attributes.java
// public abstract class Attributes {
// 
//     protected Map<String, String> attributes = new HashMap<String, String>();
//     public Map<String, String> getAttributes() {
//         return attributes;
//     }
// 
//     /**
//      * Create picture attributes
//      *
//      * @return {@link PictureAttributes}
//      */
//     public static PictureAttributes createPictureAttributes() {
//         return new PictureAttributes();
//     }
// 
// }
// 
// Path: reactivefb/src/main/java/com/beltaief/reactivefb/util/Utils.java
// public final class Utils {
//     private Utils() {
//     }
// 
//     public static Bundle getBundle(String mFields, int limit) {
//         Bundle bundle = new Bundle();
//         if (mFields != null) {
//             bundle.putString("fields", mFields);
//         }
//         if (limit > 0) {
//             bundle.putString("limit", String.valueOf(limit));
//         }
//         return bundle;
//     }
// 
//     @SuppressWarnings("resource")
//     public static String encode(String key, String data) {
//         try {
//             Mac mac = Mac.getInstance("HmacSHA256");
//             SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "HmacSHA256");
//             mac.init(secretKey);
//             byte[] bytes = mac.doFinal(data.getBytes());
//             StringBuilder sb = new StringBuilder(bytes.length * 2);
//             Formatter formatter = new Formatter(sb);
//             for (byte b : bytes) {
//                 formatter.format("%02x", b);
//             }
//             return sb.toString();
//         } catch (Exception e) {
//             Logger.logError(Utils.class, "Failed to create sha256", e);
//             return null;
//         }
//     }
// }


import android.os.Bundle;
import com.beltaief.reactivefb.util.Attributes;
import com.beltaief.reactivefb.util.Utils;
import com.google.gson.annotations.SerializedName;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
            Set<String> properties;

            public Builder() {
                properties = new HashSet<String>();
            }

            /**
             * Add property you need
             *
             * @param property
             *            The property of the user profile<br>
             *            For example: {@link Profile.Properties#FIRST_NAME}
             * @return {@link Profile.Properties.Builder}
             */
            public Builder add(String property) {
                properties.add(property);
                return this;
            }

            /**
             * Add property and attribute you need
             *
             * @param property
             *            The property of the user profile<br>
             *            For example: {@link Profile.Properties#PICTURE}
             * @param attributes
             *            For example: picture can have type,width and height<br>
             *
             * @return {@link Profile.Properties.Builder}
             */
// Path: reactivefb/src/main/java/com/beltaief/reactivefb/util/Attributes.java
// public abstract class Attributes {
// 
//     protected Map<String, String> attributes = new HashMap<String, String>();
//     public Map<String, String> getAttributes() {
//         return attributes;
//     }
// 
//     /**
//      * Create picture attributes
//      *
//      * @return {@link PictureAttributes}
//      */
//     public static PictureAttributes createPictureAttributes() {
//         return new PictureAttributes();
//     }
// 
// }
// 
// Path: reactivefb/src/main/java/com/beltaief/reactivefb/util/Utils.java
// public final class Utils {
//     private Utils() {
//     }
// 
//     public static Bundle getBundle(String mFields, int limit) {
//         Bundle bundle = new Bundle();
//         if (mFields != null) {
//             bundle.putString("fields", mFields);
//         }
//         if (limit > 0) {
//             bundle.putString("limit", String.valueOf(limit));
//         }
//         return bundle;
//     }
// 
//     @SuppressWarnings("resource")
//     public static String encode(String key, String data) {
//         try {
//             Mac mac = Mac.getInstance("HmacSHA256");
//             SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "HmacSHA256");
//             mac.init(secretKey);
//             byte[] bytes = mac.doFinal(data.getBytes());
//             StringBuilder sb = new StringBuilder(bytes.length * 2);
//             Formatter formatter = new Formatter(sb);
//             for (byte b : bytes) {
//                 formatter.format("%02x", b);
//             }
//             return sb.toString();
//         } catch (Exception e) {
//             Logger.logError(Utils.class, "Failed to create sha256", e);
//             return null;
//         }
//     }
// }


// Path: app/src/main/java/com/beltaief/reactivefbexample/models/Profile.java
import android.os.Bundle;
import com.beltaief.reactivefb.util.Attributes;
import com.beltaief.reactivefb.util.Utils;
import com.google.gson.annotations.SerializedName;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

            Set<String> properties;

            public Builder() {
                properties = new HashSet<String>();
            }

            /**
             * Add property you need
             *
             * @param property
             *            The property of the user profile<br>
             *            For example: {@link Profile.Properties#FIRST_NAME}
             * @return {@link Profile.Properties.Builder}
             */
            public Builder add(String property) {
                properties.add(property);
                return this;
            }

            /**
             * Add property and attribute you need
             *
             * @param property
             *            The property of the user profile<br>
             *            For example: {@link Profile.Properties#PICTURE}
             * @param attributes
             *            For example: picture can have type,width and height<br>
             *
             * @return {@link Profile.Properties.Builder}
             */
            public Builder add(String property, Attributes attributes) {